# [SOLVED] Mplayer - optymalizacja dzialania

## cinek810

Witam, mam pewne problemy z mplayer-em

Otóż, nie mogę wystartować go ze sterownikiem wyjscia video odpowiednim dla mojej karty (nvidia):

```

marcin@localhost /mnt/cdrom $ mplayer -vo xvmc dekalog___05__1988_.avi 

MPlayer SVN-r24130 (C) 2000-2007 MPlayer Team

CPU: AMD Athlon(tm) XP 2200+ (Family: 6, Model: 8, Stepping: 0)

MMX supported but disabled

MMX2 supported but disabled

SSE supported but disabled

3DNow supported but disabled

3DNowExt supported but disabled

CPUflags:  MMX: 0 MMX2: 0 3DNow: 0 3DNow2: 0 SSE: 0 SSE2: 0

Skompilowano dla procesora x86 z rozszerzeniami:

Odtwarzam dekalog___05__1988_.avi.

Wykryto format pliku AVI.

[aviheader] Video stream found, -vid 0

[aviheader] Audio stream found, -aid 1

VIDEO:  [DIVX]  624x384  24bpp  29.970 fps  896.1 kbps (109.4 kbyte/s)

Błąd przy otwieraniu/inicjalizacji wybranego urządzenia video (-vo).

==========================================================================

Otwieram dekoder audio: [mp3lib] MPEG layer-2, layer-3

AUDIO: 48000 Hz, 2 ch, s16le, 64.0 kbit/4.17% (ratio: 8000->192000)

Wybrany kodek audio: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)

==========================================================================

AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)

Wideo: brak obrazu

Odtwarzam...

```

Kończy się to brakiem synchronizacji A-V. Oczywiście mogę włączyć pomijanie klatek i wtedy problem jest połowicznie rozwiązany, wolałbym jednak jakoś się z tym uporać. Mplayer jest skompilowany z flagą xvmc:

```

marcin@localhost /mnt/cdrom $ equery uses mplayer

 + + video_cards_nvidia  : <unknown>

 + + xvmc                : Enables X-Video Motion Compensation support

```

Poza tym problemem, zdaje sobie sprawę, że mam bardzo zachowawczo ustawione CFLAGS:

```

CFLAGS="-O2 -march=i686 -pipe"

```

Czy zmiana tutaj na -march="athlon-xp" i ewentualnie -fomit-frame-pointer mogą coś poprawić- przy nie działającym sterowniku?

Czy może to mieć jakieś problematyczne skutki, jeśli przestawie sobie CFLAGS na kompilacje tylko mplayera, a potem wróce do starych ustawień. Wiem, że najlepiejbyłoby zrobić -e world, ale.. to potrwa dłużej, więc odkładam na po sesji..

z góry dzięki za pomocLast edited by cinek810 on Mon Jan 21, 2008 6:59 pm; edited 1 time in total

----------

## mistix

Pokaż 

```
emerge -pv mplayer
```

----------

## cinek810

```
marcin@localhost /mnt/cdrom $ emerge -pv mplayer

These are the packages that would be merged, in order:

Calculating dependencies... done!

[ebuild   R   ] media-video/mplayer-1.0_rc1_p20070824  USE="3dnowext* X alsa dvd encode gif iconv ipv6 jpeg mmxext* 

mp3 png quicktime real truetype unicode vorbis win32codecs xvmc -3dnow -a52 -aac -aalib (-altivec) -amrnb -amrwb -ar

ts -bidi -bindist -bl -cddb -cdio -cdparanoia -cpudetection -custom-cflags -dga -directfb -doc -dts -dv -dvb -enca -

esd -fbcon -ftp -ggi -gtk -ivtv -jack -joystick -libcaca -lirc -live -livecd -lzo -mad -md5sum -mmx -mp2 -musepack -

nas -openal -opengl -oss -pnm -pvr -radio -rar -rtc -samba -sdl -speex -srt -sse -sse2 -ssse3 -svga -teletext -tga -

theora -tivo -v4l -v4l2 -vidix -x264 -xanim -xinerama -xv -xvid -zoran" VIDEO_CARDS="nvidia -i810 -mga -s3virge -tdf

x -vesa" 0 kB 

Total: 1 package (1 reinstall), Size of downloads: 0 kB

```

----------

## mistix

Moim zdaniem możesz zmienić CFLAGS na nowe ustawienia i spróbować co się stanie, a później wrócić do starych ustawień. A i może nie masz takiego sterowniki tzn 

```
mplayer -vo help
```

----------

## cinek810

No tak.. mplayer nie widzi sterownika xvmc, ale.. przeciez jest skompilowany z odpowiednia flaga...

zmienilem CFLAGS, poszlo ok.

potem dodalem jeszcze USE=" mmxext 3dnowext" i podczas kompilacji wywalilo:

Naruszenie ochrony pamieci..

```
marcin@localhost ~/Wyklady/Cząstki i jądro $ mplayer -vo help

MPlayer SVN-r24130 (C) 2000-2007 MPlayer Team

CPU: AMD Athlon(tm) XP 2200+ (Family: 6, Model: 8, Stepping: 0)

MMX supported but disabled

MMX2 supported but disabled

SSE supported but disabled

3DNow supported but disabled

3DNowExt supported but disabled

CPUflags:  MMX: 0 MMX2: 0 3DNow: 0 3DNow2: 0 SSE: 0 SSE2: 0

Skompilowano dla procesora x86 z rozszerzeniami:

Dostępne wyjściowe sterowniki video:

        x11     X11 ( XImage/Shm )

        xover   General X11 driver for overlay capable video output drivers

        dga     DGA ( Direct Graphic Access V2.0 )

        v4l2    V4L2 MPEG Video Decoder Output

        null    Null video output

        mpegpes Mpeg-PES file

        yuv4mpeg        yuv4mpeg output for mjpegtools

        png     PNG file

        jpeg    JPEG file

        gif89a  animated GIF output

```

----------

## mbar

nie powinieneś czasem włączyć flagi "xv"?

----------

## lsdudi

 *cinek810 wrote:*   

> No tak.. mplayer nie widzi sterownika xvmc, ale.. przeciez jest skompilowany z odpowiednia flaga...
> 
> zmienilem CFLAGS, poszlo ok.
> 
> potem dodalem jeszcze USE=" mmxext 3dnowext" i podczas kompilacji wywalilo:
> ...

 

nie dziwie się skoro masz włączone wersje drugie rozszerzeń *ext  a nie masz włączone anie 3dnow anie mmx w wersji pierwszej

tak dodatkowo dodtanie vesy tez nie zaboli

----------

## unK

W sumie przyczyną może być to, że masz cały system skompilowany z -march=i686, czyli bez obsługi 3dnow, mmx i sse. Ale to tylko taka spekulacja.

 *Quote:*   

> podczas kompilacji wywalilo:
> 
> Naruszenie ochrony pamieci.. 

 

pokaż fragment outputu kompilacji, w którym wywala ten segfault.

----------

## cinek810

przekompilowałem jeszcze raz bez flag od mmx 3dnow, od sse nawet nie znalazłem odpowiedniej więc dałem narazie spokój.

skompilowałem jednak z xv i jest o tyle lepiej ze przez ten sterownik dziala lepiej niz poprzednio.

Jednak dalej mplayer -ov help nie wypisuje mi jako mozliwego wyjscia xvmc...

sprobuje dodac vesa, ale...

Czy myslicie, ze brak xvmc moze byc zwiazany  z brakiem mmx i 3dnow?

Jesli tak, to dodam i skompiluje tez zalerznosci mplayera z "poprawionymi" CFLAGS, to powinno pomoc?

log z seg. faultem, mam w tej chwili nadpisany- nie mam go.

[Edit]

Źle napisałem wcześniej, że mplayer nie widzi mi xvmc, ponieważ xvmc znajduje się na liście mplayer -vo help, jednak próba użycia wyjścia kończy się następująco:

```

marcin@localhost /mnt/cdrom $ mplayer -vo xvmc dekalog___05__1988_.avi 

MPlayer SVN-r24130 (C) 2000-2007 MPlayer Team

CPU: AMD Athlon(tm) XP 2200+ (Family: 6, Model: 8, Stepping: 0)

MMX supported but disabled

MMX2 supported but disabled

SSE supported but disabled

3DNow supported but disabled

3DNowExt supported but disabled

CPUflags:  MMX: 0 MMX2: 0 3DNow: 0 3DNow2: 0 SSE: 0 SSE2: 0

Skompilowano dla procesora x86 z rozszerzeniami:

Odtwarzam dekalog___05__1988_.avi.

Wykryto format pliku AVI.

[aviheader] Video stream found, -vid 0

[aviheader] Audio stream found, -aid 1

VIDEO:  [DIVX]  624x384  24bpp  29.970 fps  896.1 kbps (109.4 kbyte/s)

vo_xvmc: X-Video extension 2.2

vo_xvmc: No X-Video MotionCompensation Extension on :0.0

Błąd przy otwieraniu/inicjalizacji wybranego urządzenia video (-vo).

==========================================================================

Otwieram dekoder audio: [mp3lib] MPEG layer-2, layer-3

AUDIO: 48000 Hz, 2 ch, s16le, 64.0 kbit/4.17% (ratio: 8000->192000)

Wybrany kodek audio: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)

==========================================================================

AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)

Wideo: brak obrazu

Odtwarzam...

```

Jak napisał tak robi, słychać dzwięk, ale obraz się nie pojawia.

----------

## matiit

Też mi to nie działa... Ale powiedz czemu Ci tak zależy na tym? Aż takie dobre to xvmc?

----------

## cinek810

hym... nie wiem czy az jakies dobre, bo mi nie działa :)

ale chciałbym, żeby działało, a po czasie używania gentoo na ustawieniach bardzo bezpiecznych i zapoznaniu sie jak dziala mniej wiecej portage, jak co konfigurowac, gdzie jakies zmienne wpisac, chcialbym troche instalacje zoptymalizowac...

----------

## vermaden

```
MMX supported but disabled 

MMX2 supported but disabled 

SSE supported but disabled 

3DNow supported but disabled 

3DNowExt supported but disabled 

CPUflags:  MMX: 0 MMX2: 0 3DNow: 0 3DNow2: 0 SSE: 0 SSE2: 0
```

przez to ci muli, skompiluj zeby to obslugiwal.

----------

## cinek810

probuje skompilowac, dodalem sobie jako flagi do mplayera nie wymienione w use.desc mmx i 3dnow, bez -ext; moze cos pomoze

dziwni mnie tylko ze pomimo iz nie mam ustawionego -ffast-math, w trakcie kompilacji widze wywolania gcc wlasnie z takim argumentem.. 

Zdaje sie, ze to moze sprawiac problemy, ale jak to wylaczyc. 

```

emerge --info 

```

nie podaje mi w CFLAGS -ffast-math

[Edit]

Pytanie, które zadałem odnośnie -ffast-math, pozostaje aktualne. Obecnie sytuacja wygląda następująco:

```

MPlayer SVN-r24130 (C) 2000-2007 MPlayer Team

CPU: AMD Athlon(tm) XP 2200+ (Family: 6, Model: 8, Stepping: 0)

CPUflags:  MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 1 SSE2: 0

Skompilowano dla procesora x86 z rozszerzeniami: MMX MMX2 3DNow 3DNowEx SSE

Odtwarzam dekalog___05__1988_.avi.

Wykryto format pliku AVI.

[aviheader] Video stream found, -vid 0

[aviheader] Audio stream found, -aid 1

VIDEO:  [DIVX]  624x384  24bpp  29.970 fps  896.1 kbps (109.4 kbyte/s)

vo_xvmc: X-Video extension 2.2

vo_xvmc: No X-Video MotionCompensation Extension on :0.0

Błąd przy otwieraniu/inicjalizacji wybranego urządzenia video (-vo).

==========================================================================

Otwieram dekoder audio: [mp3lib] MPEG layer-2, layer-3

AUDIO: 48000 Hz, 2 ch, s16le, 64.0 kbit/4.17% (ratio: 8000->192000)

Wybrany kodek audio: [mp3] afm: mp3lib (mp3lib MPEG layer-2, layer-3)

==========================================================================

AO: [alsa] 48000Hz 2ch s16le (2 bytes per sample)

Wideo: brak obrazu

```

Znacząca poprawa jeśli idzie o jakość działania, po skompilowaniu z mmx, mmxext itd.

Ciągle jednak nie działa mi xvmc, a chciałbym porównać jego osiągnięcia :)

Powtórze może jeszcze pytanie, dlaczego flagi mmx, sse i 3dnow, nie znajduja sie w /usr/portage/profile/use.local.desc?

----------

## mziab

Pojawianie się -ffast-math przy kompilacji mplayera to nic niepokojącego. Mplayer domyślnie sam dobiera optymalizację i flagi kompilatora. Jeśli chcesz wymusić swoje flagi, ustaw w USE dla mplayera flagę "custom-cflags". Ogólnie jednak nie ma takiej potrzeby, -ffast-math jest używane nie bez powodu. Choć czasem można odnieść inne wrażenie, deweloperzy mplayera raczej wiedzą co robią  :Smile: 

A xvmc raczej kiepsko spisuje się na kartach Nvidii. Zdecydowanie nie polecam. Działa tylko z niektórymi odmianami MPEG1 i 2 (o ile pamięć nie myli). O akcelerowaniu divx, xvid czy h264 zapomnij. Zresztą, nawet jak działa, to bez rewelacji. Dużo lepiej używać xv.

----------

## cinek810

cóż.. dzięki

poszukam sobie czegoś innego do optymalizowania :)

nie bedzie trudno znalesc

----------

