View previous topic :: View next topic |
Author |
Message |
Vortex375 Veteran
Joined: 03 Mar 2005 Posts: 1739 Location: Deutschland
|
Posted: Wed Jun 20, 2007 12:20 pm Post subject: Fragen zum Verhalten von mplayer |
|
|
Hi zusammen. Mir ist grad beim Herumexperimentieren mit mplayer etwas interessantes aufgefallen.
Ich habe eine Datei im h.264 codec mit 1280x720 Pixeln abgespielt. Das beansprucht auf meinem Rechner rund 50% CPU-Zeit. Mit ist aber aufgefallen, dass ich das Wiedergabefenster beliebig groß ziehen kann, ohne dass die CPU Auslastung zunimmt.
Zunächst dachte ich, dass das am hardwarebeschleunigten X-Video-Adapter liegt, aber es funktioniert auch mit Videoausgabe-Modulen, die kein hardwarebeschleunigtes Scaling unterstützen. Jedoch verhalten sich alle ein wenig anders.
Mit -vo xv (dem Standard) kann ich problemlos bis auf eine Fensterbreite von 10000 Pixeln gehen. Das Bild wird logischerweise matschig, aber die Wiedergabe läuft flüssig und in normalem Tempo weiter.
Mit -vo x11 (und der Zusatzoption -zoom) komme ich nur bis auf 2000 Pixel Fensterbreite. Sobald ich die 2000 erreiche/überschreite kommt ein "Mplayer was interrupted by Signal 6".
Mit -vo gl (benutzt auch den SwScaler) komme ich bis auf 4000 Pixel. Wenn ich drüberhinaus gehe hängt sich Mplayer mit 100% CPU-Last auf und rendert so alle halbe Minute mal ein Frame.
Das hat für mich jetzt ein paar Rätsel aufgeworfen. Ich dachte eigentlich, dass das Scaling ziemlich rechenintensiv ist. Allerdings steigt die CPU-Auslastung selbst mit den unbeschleunigten Videoausgabe-Modulen nicht an. Diese scheinen jedoch irgend ein Limit zu haben, wenn man zu groß skaliert dann hängt sich mplayer auf.
Ich frage mich in diesem Sinne auch, was denn dann der Nutzen des beschleunigten XVideo-Treibers ist. Denn die CPU-Auslastung ist mit den nicht beschleunigten Treibern nur unmerklich größer.
Oder liegt es daran, dass er immer nur den Teil des Videos dekodiert/scaled, der auch wirklich angezeigt wird? Mein Monitor hat nämlich nur eine Auflösung von 1024x768 Pixeln.
Kann mir jemand dieses Phänomen vieleicht genauer erklären? |
|
Back to top |
|
|
hoschi Advocate
Joined: 19 Jul 2003 Posts: 2517 Location: Ulm, Germany, Europe
|
Posted: Wed Jun 20, 2007 5:40 pm Post subject: |
|
|
Ohne viel Ahnung davon zu haben, leuchtet mir es nicht ein warum Zoom/Scaling auch nur annäherend Einfluss auf die CPU-Auslastung haben sollte. Der MPEG/OGG-Container muss immer nur "dekodiert" werden. Dekodierung erfolgt im Gegensatz nur Kodierung ja mit dem Limit der Frameausgabe und etwas Puffer.
Das Ausgeben über die entsprechende Videoschnittstellen könnte da eher Einfluss haben, gerade wenn ich an den Grafikspeicher und XVideo denke, letzteres ist leider immer noch etwas Buggy, wenn der Videospeicher voll läuft. Was einem mit alten Inteltreibern und wenig Videospeicher bei Videos mit hoher Auflösung passieren kann. Grosse Videos oder sonst irgendwie hochqulitatives Material gebe ich mit Mplayer immer auf dem Terminal (Framebuffer) aus, da läuft einfach alles sauber.
Lass doch mal das Video "kleiner" abspielen mit 640x480 und zeichne die CPU-Auslastung auf (kannst ja den System-Monitor im Hintergrund offen lassen), und dann nochmal mit der Vollbildausgabe vergleichen. _________________ Just you and me strogg! |
|
Back to top |
|
|
Vortex375 Veteran
Joined: 03 Mar 2005 Posts: 1739 Location: Deutschland
|
Posted: Wed Jun 20, 2007 6:04 pm Post subject: |
|
|
Quote: | Ohne viel Ahnung davon zu haben, leuchtet mir es nicht ein warum Zoom/Scaling auch nur annäherend Einfluss auf die CPU-Auslastung haben sollte. Der MPEG/OGG-Container muss immer nur "dekodiert" werden. |
Mit Dekodieren ist es aber nicht getan. Die Daten auf deiner Festplatte müssen eine ganze Reihe von Schritten durchlaufen, bis du ein Bild auf dem Monitor sehen kannst.
Nachdem das Bild dekodiert wurde, kann man ja noch verschiedene Video-Filter (PostProcessing etc.) drüber laufen lassen. Und anschließend muss es dann noch auf dem Bildschirm ausgegeben werden. Wenn der Film jetzt aber nicht die gleiche Auflösung wie der Monitor hat und man will Vollbild haben, dann muss der Computer das Bild eben vergrößern oder verkleinern.
Und wie vergrößert oder verkleinert ein Computer ein Bild ohne zu Rechnen bzw. die CPU zu bemühen? Das erklärste mir mal plausibel.
Quote: | Lass doch mal das Video "kleiner" abspielen mit 640x480 und zeichne die CPU-Auslastung auf (kannst ja den System-Monitor im Hintergrund offen lassen), und dann nochmal mit der Vollbildausgabe vergleichen. |
Das könnte ich ausprobieren, aber dazu muss ich mir irgendwie die durschnittliche CPU-Last von mplayer während einer Minute oder so anzeigen lassen. Mit der momentanen CPU-Auslastung kann man nicht viel vergleichen, da diese stark schwankt.
Weiß jemand wie ich die CPU-Auslastung des mplayer Prozesses über einen bestimmten Zeitraum beobachten kann? |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|