[mythtv-users] My experience with HD video and the Nvidia 6200TC

Yeechang Lee ylee at pobox.com
Sun May 14 07:47:41 EDT 2006


(This is part of an occasional series on how I've successfully [or
unsuccessfully] accomplished something in MythTV on my Fedora Core
4-based system using the ATrpms packages. I will assume that readers
can do basic Linux tasks, such as install RPMs, edit /etc files, and
generate xorg.conf. I hope to cover the mystery areas where others may
most often fall astray in.)

I am able to happily view high-definition (1080i and 720p) video
through MythTV. Here are the ingredients:

* A powerful-enough frontend. As I understand it, my Pentium 4 3.0GHz
  frontend/backend is just over the line in terms of having enough
  horsepower to display HD without XvMC. This is important, as I'll
  get to later.
* A supported video card. For HD, this generally means an Nvidia 5200
  (AGP) or 5300 (PCI Express; rare), or later; I have an Nvidia 6200
  TC with 128MB. ATI owners who want to display HD (as opposed to
  standard-definition) are, from what I understand, out of luck due to
  driver-support issues. Recent Intel integrated-graphic chipsets (my
  MythTV box has one, actually) and the Via UniChrome also work, but I
  don't have any firsthand experience with them.
* A HD display. I have a 1920x1080p panel now but previously happily
  used a 1280x1024 monitor; MythTV happily scaled high-definition
  pictures into a 1280x720 rectangle in the middle of the
  monitor. I'll briefly speak on modelines later.

I use ATrpms' prepackaged Nvidia drivers on my Fedora Core 4 MythTV
box. The RPM packages are nvidia-graphics-devices,
nvidia-graphicsxxxx-libs, nvidia-graphicsxxxx,
nvidia-graphicsxxxx-kmdl, and nvidia-graphics-helpers. General
consensus is that only the 7676 and the most-recent 8756 versions are
worthwhile. For me xxxx=7676, because the -kmdl package is
kernel-specific, I still use the 2.6.15-1.1833-FC4smp kernel RPM [1],
and there is no 8756-kmdl package for 2.6.15. I'll proceed from here
using 7676 as the example.

After installing the relevant RPM packages, type

# nvidia-graphics-switch 7676

This modifies various things inside the system to suit your driver;
with multiple Nvidia driver version installed, this command switches
from one to another. It's probably a good idea to now reboot the
system. Sometimes (I say sometimes because this doesn't always happen
at this stage) the driver will after the reboot switch out the
existing /etc/X11/xorg.conf file for a generic one. This will
typically be obvious because the resolution will be set very low
(800x600, for example). Just rename xorg.conf.backup (the original
file) back to xorg.conf, then restart X (Ctrl-Alt-Delete).

Key configuration changes occur in three places: xorg.conf, the
nvidia-settings utility, and mythfrontend.

* xorg.conf
Some excerpts:

Section "Module"
        Load  "dbe"
        Load  "extmod"
        Load  "fbdevhw"
        Load  "glx"
        Load  "record"
        Load  "freetype"
        Load  "type1"
        Load  "v4l"
EndSection

Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Westinghouse"
        ModelName    "LVM-37W1"
        HorizSync    30 - 80
        VertRefresh  50 - 75
        Option      "dpms"

#       DisplaySize 820 460 # My monitor's actual dimensions
        DisplaySize 488 274 # Used to force 100x100 DPI, which MythTV likes

        Modeline "1920x1080-59.94p"
	148.352
	1920 1960 2016 2200
        1080 1082 1088 1125
	+hsync -vsync
	# The modeline I use

        Modeline "1920x1080-60p"
	148.5
	1920 1960 2016 2200
	1080 1082 1088 1125
	# Another modeline I've used

        Modeline "1920x1080-59.94i"
	74.176
	1920 1960 2016 2200
	1080 1082 1088 1125
	Interlace
	# What I'd use if I had a 1080i display, or if I wanted it to
	# handle deinterlacing

        Modeline "1920x1080"
	138.50
	1920 1968 2000 2080
	1080 1082 1087 1111
	+hsync -vsync
	# Modeline my display suggests to the driver. I have this here
	# because certain versions of the Nvidia driver properly read
	# it from the display and others don't; I can't remember what
	# the case is for 7676.

EndSection

Section "Device"
        Identifier  "Videocard0"
        Driver      "nvidia"
        VendorName  "eVGA"
        BoardName   "Geforce 6200TC"

#       Option "ExactModeTimingsDVI" "1" # Doesn't work for me
        Option "XvmcUsesTextures" "Yes" # I don't think this does anything on a 6200
#       Option "NoDDC"
#       Option "ConnectedMonitor" "DFP"

EndSection

* nvidia-settings (X = check, _ = no check)
In X Server XVideo Settings: 
X Video Texture Adapter|Sync to VBlank (Highly important!)
_ Video Blitter Adapter|Sync to VBlank

In OpenGL Settings:
X Sync to VBlank
X Allow Flipping.

* mythfrontend's Setup|TV Settings|Playback
X Deinterlace playback | Bob (2x framerate)
Preferred MPEG2 Decoder: libmpeg2 (I can't say I've seen a difference
here between this and Standard.)
X Enable OpenGL vertical sync for timing (RTC timing, used when
unchecked, also works fine, as long as dev.rtc.max-user-freq=1024
appears in /etc/sysctl.conf)
X Enable realtime priority threads (irrelevant, as I haven't actually taken
the steps to let mythfrontend run in realtime)
_ Use video as timebase
X Extra audio buffering

What happens with different settings:
* _ Video Texture Adapter|Sync to VBlank (Video tearing, so that the
  top 1/6 of the picture appears slightly behind or ahead of the rest)
* Kernel, one field, and linear blend filters (Inferior to Bob, in my
  experience. But if I do use them, I have to turn OpenGL sync off in
  mythfrontend to avoid stuttering video.)
* Preferred MPEG Decoder: XvMC (Video looks great, as it always uses
  Bob deinterlacing. However, XvMC doesn't save very much CPU
  horsepower on my setup, and in any case, displaying the OSD always
  causes the video to stutter. My understanding is that on a 5200/5300
  that XvmcUsesTextures line above would solve the issue; I actually
  have a 5300 I bought for cheap off eBay and mean to try this
  sometime.)

With the above settings, I get what I can only describe as jaw
droppingly-good video output on my 37" panel. For example, about 70
seconds into a Discovery HD program called HD Traveler: New York City,
there is a right-left pan looking down into Times Square. If I use any
filter besides Bob, the streetscape blurs during the pan; with Bob, I
can make out sufficient details such that I can tell that one of the
storefronts on the other side of the street from the camera is a Chase
Bank.

[1] I'd use 2.6.16 if I could because I could then use the 8756 driver
in ATrpms packaging. However, with all FC4 2.6.16 kernel packages I've
tried, including the latest 2108, I can reliably hang my MythTV system
in a few seconds by making a Samba or NFS connection to another system
on the network (not the NAS I keep my MythTV recordings on, but
another Linux box running FC3). I believe it has something to do with
2.6.16' included sky2 and sk98lin kernel modules that support my
D-Link (SysKonnect) gigabit Ethernet card. When I try to manually
compile the sk98lin driver I downloaded from the SysKonnect site (what
I have to use for pre-2.6.16 kernels), I get an error.

-- 
Yeechang Lee <ylee at pobox.com> | +1 650 776 7763 | San Francisco CA US


More information about the mythtv-users mailing list