Quu wrote:This is what I understand about mplayer, and some questions
There is two major "versions" of mplayer (there are two OSX forks... but meh), mplayer, and mplayer-uau. MPlayer comes from the SVN while -uau comes from the GIT. the -uau respository was formed when there was a political fight between some of the mplayer devs, and uau is a fork with out being a fork. Why?
Why is uau considered better? what patches does it have that the SVN does not? is the opposite true, does SVN have stuff the git version does not? Not a vauge "it has more patches"... but WHY is it better, why should I use uau over the svn version... give details.
How difficult is it to build mplayer from SVN or from GIT. looking at things, the git version requires either a second git for the build tools, or using Kov's fork of the fork that combines the two? As they don't make version releases, I will have to probably make builds of it if I decide to use it.
how self contained is mplayer? From what I can tell, very... it is a single executable, not counting the GUI. How much control do I have over the playback details, can I specify a specific sound device to output to, if I am on a computer with 3 sound devices? how easy is it to control the video playback, can I have it take over monitor #2 and make sure to be on top and not display any mouse or anything? ie totally control that monitor?
Does it support hardware acceleration under windows and or mac? I know under linux it supports it with nvidia chips only. I want to be able to play 1080p H.264 video on an
Acer Aspire Revo 3610 (Atom 330 and ION graphics card). The revo is my "lowest target"... ie I want players to be able to be on a revo or better.
OK, to start with, MPlayer main is NOT SVN only. You can get source tarballs AS WELL AS GIT FOR IT. As I understand it, the majority of mplayer devs don't like the way uau writes things, so a lot of his features were left out and ignored. There is a separate repository for uau's own stuff built on top of regular mplayer. The single biggest advantages I can think of are pause behavior and even moreso, uau's matroska demuxer. It is on par with Haali's and at times is even better. Standard mplayer does NOT support matroska chapters/editions in full, only a small subset of the chapter system. Other differences are the improved mkv splitter is default rather than lavf, code cleanup, and better VDPAU for GPU decoding on nvidia cards.
MPlayer works by for the most part linking other libraries, but it has got it's own stuff, especially for demuxing. Examples of libraries it links to are libavformat, libavcodec, and libass; the three main libs that VLC requires for playing back subtitled video, although a good mplayer build is significantly newer on those codebases than VLC. Because of it's reliance on libav*, mplayer links to ffmpeg or ffmpeg-mt depending on your setup. ffmpeg-mt is maintained by astrange. It lets you have multithreaded decoding and whatnot. The other main lib used mostly for soft-subtitle formats like SSA V4+ is libass, maintained by zgreg. Stock mplayer DOES use these libraries but not always the most up to date versions. Unfortunately, compiling all of these is find on a linux system with split packages but lacking a single binary makes it kind of a pain on windows.
A few months ago, uau, astrange, zgreg, and elenril got together and setup the mplayer-build git repository. It's a GIT repo with a bunch of buildscripts to make it easy to make single large packages for debian and whatever other distributions without having to have a heap of dependancies for the major libraries. It's quite easy to use, just git clone, ./init && ./enable-mt, then either make or dpkg-buildpackage. It has scripts to update individual repositories too, and to update the scripts themselves just run a git pull. This is still not ideal for windows. Kovensky has a split of this repo for some patches that make it run more friendly in windows though. With that repo, you can make single fat binaries without dynamic linking that can be used on a windows system without a hitch. It is easier to build from these repositories than it is to build from SVN. Note that Kov's repo is not a fork, rather a branch which just patches the main build repo to be friendlier in windows. Similarly, uau's repo is built on top of the main SVN trunk and isn't a fork as such.
As far as control over outputs, that can be done on the options you pass to mplayer on CLI/slave, or otherwise you can set them in the mplayer.conf and codecs.conf. Every single mplayer option can be controlled from the CLI interface. For example, sound output is handled by the ao flag. The main sound output driver in windows is dsound, which has a device option. You would need to know which device number is which but the syntax is, you would just do mplayer derp.aac -ao dshound:device=x where x is the number for your device. You can see what devices you have by using the -v option when playing something. As for video output, your options are directx and direct3d. DirectX seems to have an acceleration thing but I think that is for rendering rather than decoding. As far as how it takes over a monitor, that's a job for your window manager to handle and isn't really mplayer's problem. Just set your WM to force mplayer onto that monitor at all times I guess.
As I understand it, there IS work being done on GPU decoding in windows and osx but VAAPI isn't really ready yet. The only matured GPU decoder is VDPAU which requires an 8400GS or newer and Linux, along with a recent nvidia driver. To be honest though, a well tweaked and multithreaded mplayer build can handle almost anything. There is a dirty little secret of GPU decoding that nobody tells you. If a PC is new enough to have a card capable of it, then the CPU is also capable. It just depends on your software. GPU decoding for example on my c2d is fine on AVC at high resolutions; I don't know where the misconception that higher res is harder to decode comes from but a misconception it is. The thing that makes it hard to decode is algorithm complexity and more importantly, bitrate distribution. There are times when the CPU/RAM just can't handle the amount of data being thrown at it, in which case the encoder should be checking their vbv settings. Most decoding problems would be solved even at higher resolution on crappier hardware if conventions just enforced stricter rules. Force your entrants to use high@4.1 or something and there should be no problem, although I suggest that profile/level arbitrarily without actually looking to see what the limits are seeing as I don't recall them off the top of my head.
Finally, to make sure everything plays well, simply have a well written codecs.conf file. If you have optimum settings for the types of content you expect to play, then you will have no problems playing them. It's just a matter of knowing what vc/ac/demuxer works best. Poke me if you have any more questions I guess.