On Tue, Jan 22, 2002 at 06:38:52PM +0000, Stephen Davies wrote: > > HI Brian, Hi Stephen, > On Tue, 22 Jan 2002, Brian J. Murrell wrote: > > > What is judder, exactly? > > Without locked sync some frames get displayed for more time than they > should, some for less time than they should. So smooth motion becomes not > so smooth. Scrolling titles show the effect - instead of scrolling > smoothly they jerk faster and slower. OK, this is my #1 peeve with video display on Linux currently -- even when the output frame rate equals the input frame rate. I have my "mplayer playback" machine hooked up to my NTSC TV so the output frame rate is definately the same as the input frame rate. I still see judder though. And I can report with certainty that it is due to the lack of locking frame changing with the VSYNC. I determined this because I now have two video cards capable of TV-Out under Linux: A Matrox G400 and an ATI Radeon. I have thus far been reluctant to pull my G400 out of my workstation and put it into my PVR because it seems an awfully expensive waste of a lot of video hardware where not-so-expensive hardware should do the trick -- like my ~CAN$100 Radeon. But because I could experiment with VSYNC locking with the G400 and not the Radeon, I caved. I put the G400 into my PVR, and using mplayer, I tried several mplayer video output drivers, mostly framebuffer oriented. Mplayer will use the syncfb driver that is available around the 'net which gives mplayer the information it needs about when the card is VSYNCing through a kernel driver. The results were amazing! Using my CNN benchmark, even captured and MPEG1 encoded streams played back with as much smoothness as the original broadcast. There was the very occaisonal blip (judder) but I wrote that off to CPU diversion. I don't recall witnessing any "tear"ing effects either. Very nice! I also tried the directfb driver as well as mplayer's own mga (with the mga_vid kernel module) but neither gave results as good as syncfb, despite the mplayer docs saying that the mga video driver/kernel module had the syncfb VSYNC functionality in it. When I put my Radeon back in, it was horrifying. What I had thought previously was a good picture, was not so much anymore. Why not just keep using the G400? Well several reasons: 1) using the framebuffer output modes the picture was dark, and the geometry did not fill the screen properly. No amount of fiddling with fb.modes values could get it to. Even if I could, the darkness of the picture was just unacceptable. I don't know why the picture was so dark. 2) Using the XFree86 driver yeilds TV-Out but unaccelerated so no hardware scaling, etc. I am assuming there is some proprietary extension in the G400 that allows the syncfb kernel driver to get the VSYNC signal. If this is the case, it is a shame -- it is a great feature. If not, it would be nice to see the same kind of support for other video cards, like the Radeon, etc. It would seem that Stephen is dead on in his assertion that for the future of video on Linux, the ability to syncronize playback in software (like mplayer) to the VSYNC is essential. What can we do to realize this goal? b. -- Brian J. Murrell