Roadmap. Part 1: performance

Having defined the goals for the next version of the free multimedia player (lol lets put some keywords around :) now lets see what needs to be done to accomplish these goals.

Blazing performance. Both startup and playing the movie (this means fast rewinding). The next version must be even faster.

This one seems easy. MPlayer is already very fast and HTMLayout is blazing fast on startup and redrawing the interface so we have part of the work done already. But still there is one thing. Drawing the movie on the screen. I.e. the video output driver. Which one to use? MPlayer comes with severals Windows compatible drivers - DirectX, OpenGL and OpenGL 2 (this is probably just the name, not referring to OpenGL 2.0).

DirectX - should work pretty fast everywhere, supports hardware acceleration and works on Vista (I guess). Does not support pan-scan and resizes the OSD the wrong way. I.e. the subtitles are drawn on the movie with it’s original size and then the whole thing is resized (to fullscreen for example). This results uglier subtitles for movies with small resolution. Also uses hardware overlays for better performance, which has some side effects, not such a big problem though.

OpenGL - generally fast but is limited by the hardware. The video card needs to support some features. In this version of the driver, the maximum video resolution is limited by the maximum supported texture size. And 1280 pixels is pretty common video size, and not so common texture size… Supports only texture sizes that are power of two. Otherwise they are not hardware accelerated. And software OpenGL is much slower than software non-OpenGL. Have you tried playing Half-Life with OpenGL on S3 1MB video card :) ? Try software OpenGL even on a modern video card… It is very slow; This is the only driver that resizes the movie and then renders the OSD. This results very crisp subtitles. Really nice! Also supports pan-scan.

OpenGL 2 - doesn’t have the above limitations but the OSD is rendered the ugly way. What a pity. As far as I know Microsoft crippled OpenGL big time in Vista.

Then which one to choose? There is something wrong in each one of these drivers… So I will write my own “rules” driver. The plan is to use shared memory (i.e. MPlayer and rulesPlayer share the same memory location; this saves lengthy buffer copying). Let MPlayer render its stuff directly into the memory buffer -> notify rulesPlayer -> render the buffer in the window. This seems fast enough to me, but who knows. We are missing any hardware acceleration this way. But once you have the whole video frame you can crop it, you can pan-scan it, whatever. I even want to make HTMLayout render the subtitles instead of MPlayer. Don’t worry, it supports antialiased text with shadows that are not less nice than MPlayer’s. The only thing that bothers me is the performance. But we will see about that soon… If it doesn’t work out so well I will try to fix the issues with above drivers and let the user choose the one which works best on his hardware.

As you can see I want to work the details better this time. Stay tuned.

Share/Save/Bookmark


3 Responses to “Roadmap. Part 1: performance”

  1. Kevin Says:

    Great!

    Is there a timeline for the next version?

    Reply

  2. bobef Says:

    There is no rush ;) I can’t set a timeline because this is something I do in my spare time and sometimes I have more of it sometimes I have none…

    Reply

  3. Tux Says:

    Nice improvement ideas!
    I’m curious about it.

    Btw: It would also be nice to have special media icons (with the letters of the file extensions) that will be associated with the movie and audio files.

    Also it would be nice to have an option in the Player itself to check for a new version of rulesPlayer, MPlayer and the CodecPack and to download new versions automatically.

    Reply

Leave a Comment

may all beings be liberated from suffering