Thread: mplayer vdpau
View Single Post
Old 09-30-09, 12:43 PM   #1209
Stephen Warren
Stephen Warren's Avatar
Join Date: Aug 2005
Posts: 1,327
Default Re: mplayer vdpau

Originally Posted by uau View Post
I don't see any philosophical problem. The presentation queue already has to decide during which and how many display refreshes a frame is shown. The obvious answer is to show it for a refresh if the time of that refresh is later than the earliest presentation timestamp of the frame, and there is no later frame which would also fulfill this condition. This can result in showing the frame for 0, 1, 2 or more refreshes. What reason is there to special-case "0" and disallow that in particular?
Skipping display of a frame requires skipping sync-to-vblank for that queue entry. There are implementation difficulties doing this; it's probably not possible.

And again I re-iterate: The application should be aware of what it's doing and what the presentation queue's capabilities are. The application is the only software in possession of complete knowledge required to choose the correct frames to skip.

Originally Posted by uau View Post
"Incorrectly"? How? The example only required queuing 8 frames of 50 FPS content. So what's incorrect about that? Placing 8 frames in the queue? Or using the queue to play 50 FPS content?
Attempting to display 50fps content on a 24Hz display doesn't make sense without frame-dropping. The presentation queue does not implement frame dropping. Hence, the application must.

Originally Posted by uau View Post
Is there an obvious way for the application to be aware of that? In the simplest case the application opens a window, lets the window manager place in wherever (the user could move it later) and then uses the VDPAU API. How can I be sure I get the right values? If VDPAU_NVIDIA_SYNC_DISPLAY_DEVICE actually changes the behavior of the VDPAU implementation how can the application be aware of the changes without being explicitly aware of that particular environment variable and parsing it?
I suppose that in a TwinView configuration, it's not currently possible for an application to know which display device VDPAU is syncing to for the blit-based presentation queue (the overlay-based presentation queue syncs to both display devices independently). We'll think about the best solution for this.
Stephen Warren is offline   Reply With Quote