Skip to main content
Participant
December 28, 2008
Question

Tearing, v-sync problem

  • December 28, 2008
  • 2 replies
  • 8680 views
Here's a link that shows exactly the problem: http://www.amarasoftware.com/flash-animations/barcode.htm
There are a lot of vertical bars moving horizontally, after a couple of seconds video starts to tear, awfully.

The same thing happens in every flash video with a bit of movement inside, seems like flash player doesn't sync with monitor refresh rate, even if it's forced in video driver settings (vsync setting in drivers works for sure, in gaming when enabled removes the tearing effect)

System is Windows XP sp3, latest Flash 10.0.12.36, latest official Forceware 180.48 (nvidia 8800GT)
Maybe the problem is not present in Vista, but in Windows XP I'm sure it exists: formatted a couple of times recently and the problem didn't go away.
Do you experience the same tearing problem in winxp?
    This topic has been closed for replies.

    2 replies

    November 4, 2009

    I believe that you can have this tearing effect removed by installing windows vista with aero (or windows 7) -- the main problem is that win xp and below can't make use of the graphics cards v-sync option but windows vistas Aero theme uses directx or direct 3d and has v-sync.

    Cheers.

    January 6, 2009
    Hi Skryabin,
    The Flash player frame rate and update is separate from the desktop vertical refresh rate and therefore you will always see tearing or flickering in ALL movies with motion, but more pronounced in movies with tall moving items. This is true even if the movie frame rate happens to be the same as the desktop, as they will still won't be synchronized.

    This is something the game development community has long wanted Adobe to fix, but it is probably difficult to do fully. The reason is that the Flash authoring environment uses a timeline and changing the frame rate effectively changes the speed of playback, so if you authored at 60 frames per second and the user desktop was 72 frames per second, you would either have slight stuttering if you left the movie at 60 or you'd have to play it back faster to synch with the 72 frames per second which for most content wouldn't be acceptable.

    The only true way is to have a completely time based movie (uses timestamps to trigger events, motions, etc.) and then have a the ability to tell Flash to playback the movie at the user's desktop rate.

    That said, the one feature Adobe could implement easily that would go far to fix the problem is to simply have a root stage or movie flag to sync render updates to vertical blank, with the default false. That would then be backwards compatible while allowing flicker-free screen updates for those who are already managing their own double-buffered frames.

    Cheers,
    Brett
    November 3, 2009

    Hi, I am not a guru or anything like that but isn't the flash player using the GPU for full-screen video rendering? Can't it behave more like << I dunno, maybe >> Shockwave or Siverlight? I don't know if it's possible, but if you were to think the main player as a movie clip that's sync'd to the refresh rate of the screen and inside you could load many movie clips loaded at different frame rates. The problem now is that any movie clip loaded within the main movie clip is automatically adjusting the frame rate as the root.


    think of it as a normal video player (even though it's a browser plugin) -- if it can make use of the GPU, why not apply the v-sync that most modern gpu manufacturers put that by default in their latest video cards. Or you could make youse of OpenGL if not Direct3D


    And btw --  the flash video using a "Time" timeline instead of keyframes and frames is a bad, very bad idea ... nah, I don't even want to think about it -- gives me the chills.


    The Adobe team should really put that in mind. This v-sync problem is very old and annoying at the same time. I myself am a flash developer and sometimes I just want to use GIFs instead of flash because it messes up my presentations and my banner adds.



    A quick fix-up would be to use fast movement and to try to set up the frame rate to 60 (most monitors have 59.9, but it's close) even if it takes more processing power.


    Peace, I just wanted to share this with the community.