Автор Тема: Проблеми с просвирването на филми  (Прочетена 901 пъти)

dilyan_rusev

  • Напреднали
  • *****
  • Публикации: 61
    • Профил
Ами.. малко ми е неудобно да задавам въпроси тъкмо за mplayer, при все че преди време го бях подкарал на същата щайга, но наистина не мога да се справя сам.
Системата ми е:
карта: ASUS Radeon 9550 128/128 GE
процесор: Duron 1800+ (на 1350Mhz)
ядро: 2.6.15-26-386
дистрибуция: SimplyMepis 6
driver за картата: 8.32.5-x86.x86_64 (свален от сайта на ati)
версия на mplayer (mplayer --version): 0.99+1.0pre7try2+cvs20060117-0ubuntu8

Проблемът е, че mplayer е прекалено бавен когато просвирва филми на цял екран, по-точно с опциите -fs -zoom . В този случай звукът и надписите буквално "тичат" пред картината (ако не засича на "картички", то поне се бави с няколко секунди) и е доста дразнещо. Когато задам само -fs, всичко си е наред, но сами разбирате, че това убива цялото удоволствие от гледането на филми '<img'>. Та значи проблемът не е само със съответният файл, пробвах с няколко други филма, като резултатът беше горе-долу същият. Реших, че нещо mplayer не е компилиран като хората, затова пробвах с други "плейъри" - Kaffeine и Xine, но те не се справиха дори и в прозоречен режим...
Първо, реших, че проблемът е във настройките на xorg.conf. След извесно ровичкане, установих, че не намирам нищо нередно:
моят xorg.conf. Ще цитирам най-важните части (според мене) :
Цитат
Section "Module"
   Load   "GLcore"
   Load   "bitmap"
   Load   "dbe"
   Load   "ddc"
   Load   "dri"
   Load   "extmod"
   Load   "freetype"
   Load   "glx"
   Load   "int10"
   Load   "record"
   Load   "type1"
   Load   "vbe"
EndSection
...
Section "Device"
   Identifier   "ATI Technologies, Inc. RV350 AS [Radeon 9550]"
   Driver      "fglrx"
   BusID      "PCI:1:0:0"
   Option      "UseFBDev"      "true"
EndSection
...
Section "Screen"
   Identifier   "Default Screen"
   Device      "ATI Technologies, Inc. RV350 AS [Radeon 9550]"
   Monitor      "Philips 170X6"
   DefaultDepth   24
   ...
EndSection
...
Section "ServerLayout"
   Identifier   "Default Layout"
   Screen      "Default Screen"
   InputDevice   "Generic Keyboard"
   InputDevice   "Configured Mouse"
   InputDevice     "stylus" "SendCoreEvents"
   InputDevice     "cursor" "SendCoreEvents"
   InputDevice     "eraser" "SendCoreEvents"
EndSection

Section "DRI"
   Mode   0666
EndSectio

Не открих нищо нередно и при ~/.mplayer/config (ето го целия)
Цитат
...
#vo=gl2,fbdev2
...
ao=alsa
...
mixer-channel=Master
...
stop-xscreensaver=yes
...
fs=1
#zoom=1

Играх си да сменям -ao със sdl и oss, но разлика нямаше. Сетих се да махна -vo gl2 и така филмите се просвирвана нормално при -nofs, но си остана същото, когато включих -zoom. За мое учудване, -vo sdl не работеше: хвърли ми следната грешка:
Цитат
...
VO: [sdl] 640x352 => 640x352 Planar YV12
...
X11 error: XF86DGANoDirectVideoMode
...
MPlayer interrupted by signal 6 in module: key_events
...
XIO:  fatal IO error 0 (Success) on X server ":0.0"
      after 153 requests (151 known processed) with 7 events remaining.

Или по-точно проработи, но само до толкова, че да ми прецака x - смени ми разделителната, целия екран беше в мацаница и трябваше да scroll-ирам докато се добера до kcenter,да сменя и върна разделителната, за да се оправят нещата. Явно sdl не е компилирано като хората - жалко, че няма да мога да местя надписите извън черната лента, но нали не мога да гледам филми на истиски цял екран, така че какво ми пука '<img'>
След като се отчаях, реших да потърся из мрежата, та дано намеря нещо... но не намерих и се отчая още повече. Търсих тука и не намерих нищо, освен неща за надписите, кирилициране, "кожи" и прочее. Тоест нищо, което ми трябва. Не знам защо, но някак си съм убеден, че проблемът е в настройките. Ако ви трябва още информация - кажете. Имам и една карта GeForce2 MX 400, която ми служи вярно с години под Windows, но искам да пробвам всичко, преди да я сложа на мястото на ati-то... най-малкото, защото не ми се иска да съм си хвърлил парите на вятъра.
Та, както се и очаква, ще съм ви *изключително* благодарен, ако ми помогнете, защото от няколко дена (откакто махнах изцяло windows) се чувствам като идиот, който не знае нищо... Благодаря предварително!
Активен

Конфигурация:
Athlonx2 5600+, ECS A780GM-A, 4гб A-Data,  Philips 170x6-series монитор; Vista + openSUSE

stealth01

  • Гост
Проблеми с просвирването на филми
« Отговор #1 -: Dec 26, 2006, 00:11 »
разгледай това -> http://www.linux-bg.org/cgi-bin....6294278

аз най-често използвам -vo sdl или gl с -fs без -zoom
Активен

dilyan_rusev

  • Напреднали
  • *****
  • Публикации: 61
    • Профил
Проблеми с просвирването на филми
« Отговор #2 -: Dec 26, 2006, 01:11 »
Благодаря, но го разреших сам в крайна сметка... Както си мислих, решението е повече от очеизвадно.
Когато сваляме svn на mplayer и пускаме configure, когато програмата свърши, тя ни казва следното
Цитат
...
Please check mtrr settings at /proc/mtrr (see DOCS/HTML/en/video.html#mtrr)
...

А там пише:
Примерен код
8.1. Setting up MTRR

It is VERY recommended to check if the MTRR registers are set up properly, because they can give a big performance boost.

Do a cat /proc/mtrr:

--($:~)-- cat /proc/mtrr
reg00: base=0xe4000000 (3648MB), size=  16MB: write-combining, count=9
reg01: base=0xd8000000 (3456MB), size= 128MB: write-combining, count=1

It's right, shows my Matrox G400 with 16MB memory. I did this from XFree 4.x.x, which sets up MTRR registers automatically.

If nothing worked, you have to do it manually. First, you have to find the base address. You have 3 ways to find it:

   1.

      from X11 startup messages, for example:

      (--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000
      (--) SVGA: Linear framebuffer at 0xD8000000

   2.

      from /proc/pci (use lspci -v command):

      01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525
      Memory at d8000000 (32-bit, prefetchable)

   3.

      from mga_vid kernel driver messages (use dmesg):

      mga_mem_base = d8000000

Then let's find the memory size. This is very easy, just convert video RAM size to hexadecimal, or use this table:
1 MB   0x100000
2 MB   0x200000
4 MB   0x400000
8 MB   0x800000
16 MB   0x1000000
32 MB   0x2000000

You know base address and memory size, let's setup MTRR registers! For example, for the Matrox card above (base=0xd8000000) with 32MB ram (size=0x2000000) just execute:

echo "base=0xd8000000 size=0x2000000 type=write-combining" > /proc/mtrr

Not all CPUs have MTRRs. For example older K6-2 (around 266MHz, stepping 0) CPUs don't have MTRRs, but stepping 12 does (execute cat /proc/cpuinfo to check it).

Тъй като табличката е непълна, аз си я разширявам:
16 MB   0x1000000
32 MB   0x2000000
=>
64mb = 0x4000000
128mb = 0x8000000 (което е точно това, което ми трябва)

Някрая изпълнявам указанията: пиша в конзолата (като root)
Примерен код
echo "base=0xd8000000 size=0x8000000 type=write-combining" > /proc/mtrr

и проверявам дали всичко е наред:
Примерен код
cat /proc/mtrr

при успех, при вас трябва да има нещо подобно:
Примерен код
reg03: base=0xd8000000 (3456MB), size= 128MB: write-combining, count=1

след проверка с -fs -zoom всичко изглеждаше както съм си свикнал и точно каквото бих очаквал от своята щайга! Дано това мнение бъде  полезно и на някой друг!

редакция:
Решението, което написах тука, работи, но при рестарт ще трябва отново да пишете линията със echo. За постоянно решение трябва или да вмъкнете тази линия някъде в стартиращите скриптове, или да направите това, което ме посъветва stealth01. При втория начин обаче трябва да използвате -vo xv, като най-добре го сложете в файла за настройки на mplayer (~/.mplayer/config или /usr/local/etc/mplayer/mplayer.conf).



Активен

Конфигурация:
Athlonx2 5600+, ECS A780GM-A, 4гб A-Data,  Philips 170x6-series монитор; Vista + openSUSE