Hey everyone. I've been a long time reader (searcher?
of avsforum, and finally got to the point where I need some interactive assistance.
I'm putting together a linux-based HTPC using Ubuntu 7.10. The on-board video in my system is an NVidia GForce 7050PV. It's a Shuttle SN68PTG6 barebones system, with an Athlon dual core 6400+ cpu.
Pretty much everything is working well with the system, except for last night's project: 24Hz refresh rate for film sourced material. I have a display (Sony KDL-46XBR4) that supports 1080p24. Before asking my question, I'll give some useful information for those who might have this TV (or maybe others in the same line?). The EDID reported by the TV includes a mode for 1080p24:
(--) NVIDIA(0): 1920 x 1080 @ 24 Hz
(--) NVIDIA(0): Pixel Clock : 74.16 MHz
(--) NVIDIA(0): HRes, HSyncStart : 1920, 2558
(--) NVIDIA(0): HSyncEnd, HTotal : 2602, 2750
(--) NVIDIA(0): VRes, VSyncStart : 1080, 1084
(--) NVIDIA(0): VSyncEnd, VTotal : 1089, 1125
(--) NVIDIA(0): H/V Polarity : +/+
(--) NVIDIA(0): CEA Format : 32
, because of the support vertrefresh range reported by the TV, this mode is discarded by the NVidia driver when X starts up:
(--) NVIDIA(0): Valid VRefresh Range : 58 Hz - 62 Hz
After much debugging and reading seemingly endless amounts of information online, I discovered the magical option to tell the nvidia driver to ignore the valid vrefresh range. Add the following to your "Screen" section in /etc/X11/xorg.conf:
Option "ModeValidation" "DFP-0:NoVertRefreshCheck"
...assuming the TV is detected as DFP-0. (adjust the device identifier accordingly if you are crazy enough to have more than one flat panel attached to your system...)
After that, I was able to switch between 60Hz and 24Hz. I leave my resolution set to 1920x1080, since it seems to look a lot nicer if i let the video card/computer do the upscaling.
As a side note, if you want to make the NVidia driver not do the hardware upscaling to what it thinks is the best resolution (as seen in nvidia-settings as "front end" and "back end" resolutions), add the following option to your "Screen" section, too:
Option "FlatPanelProperties" "Scaling = Native"
... I wouldn't recommend it though, unless you have a specific need to output a lower resolution signal to the TV.
Finally, on to my current issue. This is difficult to explain, so bear with me.
Most of the time, the 24Hz refresh rate looks great with my various 24fps sources, but occasionally the video frames appear to be displayed in the wrong order! In other words, a sequence of frames will be displayed, then jump BACK, then forward again to compensate. Basically, as you're viewing the video, every second (when it's bad), the video will flicker back in time for a fraction of a second. The audio is unaffected.
I'm using mplayer (latest svn with a couple patches applied--the ffmpeg truehd and eac3 decoders), the xv video output driver, and a command like the following to play media:
mplayer -fps 24000/1001 /blah/blah/FEATURE_1.EVO
Oddly enough, I've only seen the problem with VC-1 encoded media (e.g., playing directly off a mounted HD-DVD), but not
with h.264 re-encoded video. I'm not sure if that was just a fluke, or what. I'm not sure how the codec would cause this kind of trouble... Tonight I'm going to give the gl/gl2 video output drivers a try to see if this is some weird mplayer/xv/nvidia bug and/or bizarreness.
I'd appreciate any clues anyone has to offer!