[MPlayer-cygwin] mplayer optimization for AMD x2

Zuxy Meng zuxy.meng at gmail.com
Wed Jul 4 09:16:24 CEST 2007


Hi,

2007/7/4, Anatoli Marinov <anatoli.marinov at gmail.com>:
> Hi folks,
>
> I am an old mplayer's fan so I use it with many OSes. Currently I am
> trying to build ultimately optimized mplayer for my AMD 4600+ x2
> processor (for windows XP).
> I found somewhere a description how to build it step by step with
> mingw. The manual was a pretty old but however now I have proper
> environment with latest ming stuff. Yesterday I have compiled current
> mplayer sources from SVN repository and everithing works fine but I am
> curious about several thing:
>
> 1.  I've compiled (configured) my mplayer without runtime CPU
> detection and with these flags:
>  --enable-mmx              enable MMX [autodetect]
>  --enable-mmxext           enable MMX2 (Pentium III, Athlon) [autodetect]
>  --enable-3dnow            enable 3DNow! [autodetect]
>  --enable-3dnowext         enable extended 3DNow! [autodetect]
>  --enable-sse              enable SSE [autodetect]
>  --enable-sse2             enable SSE2 [autodetect]
>  --enable-ssse3            enable SSSE3 [autodetect]
>
> The CPU supports all these sets of instruction. Does ssse3 work
> because I didn't see nothing special with or without it?

SSSE3 != SSE3. No AMD processors support SSSE3 yet. And currently
SSSE3 only helps encode, so you aren't actually losing anything.

> When I start the player with x264 encodec file I see:
> $ ./mplayer.exe /1.mkv
> MPlayer dev-SVN-r23715-3.4.5 (C) 2000-2007 MPlayer Team
> CPU: AMD Athlon(tm) 64 X2 Dual Core Processor 4600+ (Family: 15,
> Model: 75, Stepping: 2)
> CPUflags:  MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 0 SSE2: 0
> Compiled for x86 CPU with extensions: MMX MMX2 3DNow 3DNowEx SSE SSE2
> getch2: 6 can't get number of input events  [disabling console input]
>
> Playing C:/mingw/1.mkv.
> [mkv] Track ID 1: video (V_MPEG4/ISO/AVC), -vid 0
> [mkv] Track ID 2: audio (A_AC3), -aid 0, -alang eng
> [mkv] Will play video track 1.
> Matroska file format detected.
> VIDEO:  [avc1]  1280x544  24bpp  23.976 fps    0.0 kbps ( 0.0 kbyte/s)
> <vo_directx><ERROR>Your card doesn't support overlay
> ==========================================================================
> Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
> Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264)
> ==========================================================================
> ==========================================================================
> Opening audio decoder: [liba52] AC3 decoding with liba52
> AUDIO: 48000 Hz, 2 ch, s16le, 448.0 kbit/29.17% (ratio: 56000->192000)
> Selected audio codec: [a52] afm: liba52 (AC3-liba52)
> ==========================================================================
>
> see this line ->  CPUflags:  MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 0 SSE2: 0
> This compilation supports sse, sse2 and sse3 but why the flags are 0
> and sse3 missing?

SSE/SSE2 are disabled for Windows @ runtime due to historical reasons.
You can modify cpudetect.c to turn them on. However, even you leave
this off you are't losing much because
1. libavcodec can still use SSE/SSE2 regardless of mplayer's settings.
2. SSE are only used for some audio, and SSE2 isn't much faster than MMX.

> and this too- > Compiled for x86 CPU with extensions: MMX MMX2 3DNow
> 3DNowEx SSE SSE2 - missing sse3 why ?

Again, SSE3 != SSSE3. Neither mplayer nor ffmpeg uses SSE3.

>
> 2. For h264 decoding I am using default x264 functionality from ffmpeg
> internal codec bundle. Is it better than x264 library from
> videolan.org?

IIRC x264 is an encoder, not a decoder.

>
> 3. Can I compile fully statically linked mplayer binary and how?

I guess there's an option called --enable-static or similar. But
dynamic linking in Windows doesn't hurt runtime performance much,
except for a possible slower start time.

> 4. Could you tell me more hints for better performance :) especially
> for h264? Is it possible to use hardware acceleration mechanism from
> my nv8600GT video card because it has hardware h264 decoder, filter
> etc.

Maybe you should try CoreAVC for the time being :-( It's indeed
faster, and supports dual core.

>
> 5. What about pthreads support. I couldn't find pthreds for mingw.
> Will it works faster with pthreads or not?

You don't actually need pthread under Windows although a win32 port of
pthread does exist and works well with mplayer (Google it!). Just
install it or add a line of "HAVE_W32THREADS" in your config.mak.
Either way will turn on multithread support.

Currently only mpeg1/mpeg2 decoding supports multithreading but h264
is not far away.

>
> Lol I have so many questions :P
>
>
> eng. Anatoli Marinov
> Bulgaria

-- 
Zuxy
Beauty is truth,
While truth is beauty.
PGP KeyID: E8555ED6



More information about the MPlayer-cygwin mailing list