TV-Out for video applications under linux

by Billy Biggs <vektor@dumbterm.net>

This page is where I post stuff about TV output under Linux. My interest is high quality TV output for video applications. I'm half-heartedly working on my own DVD player, a very reet PVR, and then just for when I want to play around with video devices, like test my TV's quality or whatever.

What I would ideally like from a video card

  • Support for interlaced, Y'CBCR images at standard CCIR601 sampling of 720x480 or 720x486 for NTSC, and 720x576 for PAL.
  • Ability to write to the overscan, it would be cool to output the VBI too (output closed captions or timecode or what not).
  • Support for 4:2:2 sampling.
  • Support for 32bit or 16bit RGB would be nice too, at the same resolutions.
  • The sampling must be setup so that there is a 1-1 scanline-to-scanline mapping so that interlaced output can work.
  • Some sort of vbi interrupt so I can keep everything in sync. Having interlaced output is useless unless you can actually send a stream of fields and have them displayed in order, without jumping back in time.

Currently, the only card you can get which has driver code and hardware to meet my requirements are the Matrox G400/G450/G550 cards. The G400 card has long been a staple of Linux users, since it's a good, cheap, dual head card.

The bad news was that the maven, or MAtrox Video ENcoder chip, is proprietary and specs were never released to the Linux community. Our only hope was some reverse engineering projects: and most recently, Ville Syrjälä did the job of reverse engineering the settings required to put it into an interlaced mode and a kernel patch to give an interrupt every field! This is perfect for what I need!

Ville's code is for DirectFB, but we can port it away from that as required. For now, I'm playing around with it there since it's the easiest thing to do.

To get it working you need to get:

  • DirectFB.
  • Ville's kernel patch for 2.4 kernels to enable the VBI interrupt from the second head (from his site).

What I've done for the G400:

  • dfbtv is a test application I wrote which demonstrates V4L-input to G400-output as a pass-thru.

Other cards with TV output and what I know about them

Please email me at vektor@dumbterm.net if you have more information on any of these. I'm only interested in information on cards that are available from stores - unobsolete cards.

1 Matrox

From what I can tell, Matrox has two product divisions: their consumer video cards and their high-end video cards, and these two groups don't talk to each other much.

1.1 Matrox pro video cards (RT2500, Digi*)

From the video side, the RT2500 or the DigiSuite or DigiMix cards would be awesome. These provide high-quality video framebuffers that are more hardcore than what I'm looking for, and also are very expensive. They provide SDKs for drivers in Windows, and AFAICT, there has been nobody using these under Linux and no driver code. Due to the cost of the boards, it doesn't seem worth pursuing since any software I write would leave me as the sole user. :)

1.2 Matrox consumer cards

On the consumer side, the G450 and G550 are both available on the market and have TV output, and while it seems like these both have the same maven chip as the G400, you have to access it differently. Work has been done to get these cards to work with the DirectFB code, and so I guess things work now with it. Also, there is some G450/G550 TV output code at http://www.bglug.ca/matrox_tvout/.

2 nVidia

Our choices from nVidia are simply their consumer cards, the GeForce series. While many nVidia-based cards support TV output, different OEMs use different output chips. Some seem cool, some don't. You can check out some drivers for the various chips at the nv-tv-out project on sourceforge, which seems really cool.

The biggest problem I have with going out, buying an nVidia card, and playing with it is how to find an OEM card with the chip I want. The cheap nVidia cards, the Geforce4 MX series, all use the NV17 TV encoder which is done by nVidia. They have NOT released specs for this chip, so we're screwed. That kills most of the cheap cards.

Of the expensive cards, I forget which chip it is but one of the TV chips sucks bad and has crap drivers, but the one store near my house only had OEM cards with that chip on it (this was in July 2002). More investigation required.

The other problem is that the nv-tv-out project is currently not interested in interlaced framebuffer support from what I can tell, and getting an interrupt every field seems difficult based on the datasheets for these chips.

3 ATI

ATI has apparently refused to give out specs for the TV output for fear that we'll get around Macrovision and they'll lose their license or something. There are apparently some TV output drivers in the GATOS source tree, but I haven't checked their quality (and somehow I doubt they would be sufficient in their current state).

4 Intel

I know some i81x boards have TV output, but I know nothing about them. There seems to be some support in the above nv-tv-out project, so I consider it similar for now.

Links

Comments?

You know my email, vektor@dumbterm.net.

Icon  Name                    Last modified      Size  Description
[DIR] Parent Directory - [   ] dfb-fieldid-patch 25-Sep-2002 22:31 6.5K [DIR] dfbtv/ 30-Sep-2002 22:50 -