You should copy libavcodec stuff from ffmpeg
CVS or distributive
subfolder. Also you may install it sepraratedly
./configure --prefix=/usr --enable-shared=yes
But in this case you should be ready to have binary incompatibility between
Was found way to get MPlayerXP working under VESA!!! It's not a secret that
MPlayerXP produced coredump after start with -vo vesa
Unfortunately, the problem has NO SOLUTION
It seems, that you will be lacky only with linux-2.6.x+nptl (which is part of
glibc since 2.3.3 version)!
You need to upgrade your system as described below:
- glibc(2.3.4+) + NPTL(new POSIX thread library)
If you prefer to use Linux-2.4.x
kernel then only way to have working VESA
for you is dismounting of all mounted ext3fs volumes.
First, you need to download Cygwin
or better. (Most probably in the future MPlayerXP will be ported on
). Brief recommendation
for proper Cygwin's
configuration: if you have downloaded tar.bz2
from any of Cygwin's mirror (without
using of setup.exe
) then you need to create proper batch file to
have working environment:
mount C:/CygDrive /
After successfull installation of Cygwin
you need download win32 port
or better. (At the momemnt
of writing of this howto there was available mingw32 port of SDL
only. But it doesn't bring any troubles). You just need to copy SDL.DLL into
$cydrive/usr/bin folder and include files into $cydrive/usr/include/SDL folder.
If everything looks OK then type ./configure
subfolder. Right now you don't have make install
feature of the project
so you need to perform some operation by hands (it's not a black-art ;)
After successfull compilation of the project you should copy by hands
binaries into separate folder. Finally you should have somethjing like this:
In this configuration you will have working -ao sdl
, -ao oss
and -vo sdl
library is not a perfect solution for win32 operating systems
but is ready to use right now!
At the moment of writing of this article support of libloader.so
is not available. Most probably it would be correctly to write ac_win32 and vc_win32
Win32 developers and porters are welcomed!!!
It's most actual question when you are using player ;)
Exist a several ways to speedup playback with MPlayerXP:
- Using VIDIX if available!!! It avoids unnecessary memcpy of decoded frame due
direct access to video memory! (Some commercial drivers provide busmastering
for their cards but almost all X11 drivers don't support this feature). If
VIDIX driver support that you may activate busmastering too! Use
'-enable_bm' key of command line for that (please don't forget to load
dhahelper driver as 'modprobe dhahlper').
'-vo sdl' if available!!!
Unfortunatedly, sometime it's only way to activate busmastering on your
videocard that may extremedly speedup video playback on your hardware. Furthermore,
many world-leading companies (like ATI) suggest to perform videoplayback through
OpenGL framebuffer. They have planes to cutoff YUV-scaler (aka VideoOverlay) from further
chips since OpenGL framebuffer provides more possibilities for HW accelerating of
postprocessing and similar things.
Enable DMA for your HDD! Almost all modern Linux distributives enable
this feature for all installed HDDs. But if you are using relatively old
linux distributive then you may force DMA as:
'/bin/sh hdparm -u1 -d1 -a8 /dev/hdX'.
- Use correct AUDIO driver. It's not a secret that modern audiocards
may have broken/incomplete drivers. So you may try different drivers for audio
playback such as:
- Try disable OSD by pressing
'O' key twice.
- You you are owner of relatively "old" videocard then you may try
to play with different video codecs. For example:
'3D Rage IIC AGP'
doesn't support planar fourcc! If you are using default video codec
then you will force MPlayerXP to use software YV12 to YUY2 convertion and
will have slower total frame decoding than with using of
codec family which are capable to render YUY2 directly into video card!
- If you are using
'-vo xv' then you may try to use
Thus MPlayerXP will force MMX optimized YV12 to YUY2 convertion! It's not
a secret that almost all Xv drivers forces unoptimized YV12 to YUY2 convertion
regardless the fact that hardware is capable to support planar formats directly!
- If nothing from listed above helps then most probably you are having slow CPU.
In this case you may try
options of command line. The
'-framedrop' option drops video rendering
only. In addition
'-hardframedrop' drops decoding of non-key frames.
- You may try
'-af lp' as reasonable alternative of
framedropping. In this case MPlayerXP will play sound longer but it requires
support of low samplerate from side of your audiocard. Also you may try
'-af resample' but this filter requires more CPU usage than
The main idea of this project is reaching of SMOOTHNESS
of video playback by
threads usage!!! It's not a secret that any media stream (except audio only streams)
consists from lightweight and heavy frames! Their decoding requires different
CPU time. To have presented them on screen just in time
we need to use threading
decoding! Threading decoding also helps when your system is busy by other processes
same as when you have interruptible stream reading (network or scratched media for examlpe).
Exist a several ways to additionally improve quality of playback with MPlayerXP:
- If you still have non smooth playback (or interruptible sound in case of audio streams)
then you may increase the number of buffers for decoding ahead through
'-da_buffs' command line argument. By default MPlayerXP uses 64
buffers for decoding ahead (that's enough to predecode 2.56 sec of stream in case of 25 fps)
but if you have a large amount of RAM and relatively slow CPU then you
may try to increase this number upto 1024 (Note: the number of decoding ahead
buffers doesn't affect decoding speed). As extreme case, you may enable
'-cache' option to prefetch stream reading (in independed thread)
but this technique dramatically loads CPU!
- Using postprocessing (
'-vf pp'). Helps to blur MPEG-1/2 and DivX artefacts
if you use
'-vfm ffmpeg' codec's family. Also you may try
key to change dynamically the level of postprocessing depends on CPU loading.
- Using wide set of video postprocessing (
'-vf denoise3d', ...)
for non-linear image processing. For linear image processing you
should use video equalizing (
- Using wide set of audio postprocessing (
'-af surround', ...)
- If you are owner of enough expensive audiocard (Prodigy, Terratec, M-Audio)
then it would be better to use
'-ao alsa'. This driver supports
playing of 32-bit audio samples and many build-in codecs of MPlayerXP (such as libmp3,
liba52, libbfaac) were redesigned to provide 32-bit output.