Hi,
wie versprochen mal eine kleine Doku mit Erfahrungsbericht abseits von vdpau, zum Thema vaapi meets xinelib und damit den VDR.
1. Hardware:
- CPU: Intel Core i3-540 mit Intel HD Graphics, die GPU hat 733 MHz und sitzt im Prozessor
- Mainboard: Gigabyte GA-H55-UD3H, Intel P55, ATX, DDR3, PCI-Express
- Speicher: G.Skill NT Series F3-10600CL9D-4GBNT - Memory - 4 GB : 2 x 2 GB - DIMM 240-PIN - DDR3 -
- Festplatte: OCZ Vertex2 E 2,5" SSD 60 GB (SATA 300, OCZSSD2-2VTXE60G)
- DVB-S2-Karte: Cine-S2 Rev. 5.5
Zur Hardware gibt es folgende Anmerkungen zu machen:
- Das Board ist ein ATX-Board mit jeder Menge freien Steckplätzen, 2 x PCI-Express 16x, 1 x PCI-Express 1x und 4 x PCI zudem alle Schnittstellen die ein VDR so braucht (z.B. 1x seriell). HDMI und DVI ist selbstverständlich.
- Die Cpu ist sehr leistungsfähig und fährt auch in die passenden Energiesparmodes (bei Sky HD ist die CPU Frequenz bei Konstant 1197 MHz auf beiden Cores).
- Auf meiner Homepage gibts bald ein paar Bilder dazu und weitere Doku, wie das ganze in fertigem Zustand aussieht.
2. Software:
Debian Squeeze mit folgenden Abweichungen:
- Von Hand installierter Kernel 2.6.35.10, wobei man hier unbedingt auf die kms-Funktion im Kernel achten sollte. Diese Funktion beschleunigt nochmals den Bootvorgang und gibt der Grafik nochmals einen Leistungsschub.
- xorg-Server Version 1.9.3, aktueller Intel-Treiber Version 2.13.903
- aktuelle libdrm vom git, libva-1.0.7,
- xine-lib-1.2-vaapi von ebsi:
- Als Ausgabeplugin läuft xineliboutput mit vdr-sxfe, als kleines Feature starte ich diese Variante mit dem Parameter --hud, dann gibt es ein volltransparentes OSD mit 1920x1080er Größe
- VDR-Version ist die 1.7.16 mit aktuellen Patches
3. Testergebnisse:
- Die CPU kommt bei Full-HD-Sendern bei 1197 MHz auf eine CPU-Last von ca. 20 % auf beiden Cores, dabei ist aber das Deinterlacing (tvtime = greedy2frame) von xineliboutput aktiviert.
- Das Gesamtsystem braucht so im Normalbetrieb ca. 55 Watt bei HD-Content und zusätzlicher Platte.
- Es kommt durchwegs zu keinen Framedrops!
- Bei geöffnetem OSD ist kein Bildaussetzer zu sehen
- Alle Sender sind durchwegs sauber skaliert und sehr gut deinterlaced
- Auch mkv's und wmv's sind bei niedriger CPU-Last mit dem internen Player des xineliboutput abspielbar.
- Der aktuelle X-Server ist zwingend notwendig, da es sonst zu erhöhter CPU-Last des X-Servers kommt ( höher als 50 %)
- Der X-Server ist durch eine eigene xorg.conf auf 50 Hz eingestellt, also 1920x1080p bei 50 Hz.
- Deinterlaced-Modes kann die GPU nur am VGA-Ausgang! => die Frage ist, warum nicht am HDMI?
- Das Board selbst wird komplett von Linux supportet, NvRam-Wakeup funzt damit einwandfrei.
- ACPI und S3 habe ich nicht getestet, da ich es nicht nutze
- Umschalten geht zügig und flott, mal zum anschauen ein Auszug aus dem Log dazu:
.....
libva: 0.31
AvCodecContext w 1280 h 720
Profile: 7 (VAProfileH264High) Entrypoint 1 (VAEntrypointVLD)
found valid image format
init vaapi successfully
200 Bilder angezeigt, 33 Bilder übersprungen, 0 Bilder verworfen
prebuffer=14400 pts
prebuffer=14400 pts
xv_set_property: property=0, value=0
prebuffer=2000 pts
prebuffer=14400 pts
xv_set_property: property=0, value=0
xv_set_property: property=0, value=0
libva: 0.31
AvCodecContext w 1280 h 720
Profile: 7 (VAProfileH264High) Entrypoint 1 (VAEntrypointVLD)
found valid image format
init vaapi successfully
200 Bilder angezeigt, 26 Bilder übersprungen, 0 Bilder verworfen
prebuffer=14400 pts
xv_set_property: property=0, value=0
prebuffer=2000 pts
prebuffer=14400 pts
prebuffer=14400 pts
xv_set_property: property=0, value=0
xv_set_property: property=0, value=0
xv_set_property: property=0, value=0
prebuffer=14400 pts
prebuffer=14400 pts
xv_set_property: property=0, value=0
xv_set_property: property=0, value=0
ffmpeg_video_dec: Vergrößere Puffer auf 198667 um Überlauf zu vermeiden.
libva: 0.31
AvCodecContext w 1920 h 1080
Profile: 7 (VAProfileH264High) Entrypoint 1 (VAEntrypointVLD)
found valid image format
init vaapi successfully
ffmpeg_video_dec: Vergrößere Puffer auf 298003 um Überlauf zu vermeiden.
200 Bilder angezeigt, 67 Bilder übersprungen, 0 Bilder verworfen
video_out: Verwerfe Bild mit pts 4675982, weil es zu alt ist (Unterschied: 38191).
video_out: Verwerfe Bild mit pts 4679582, weil es zu alt ist (Unterschied: 34591).
video_out: Verwerfe Bild mit pts 4683182, weil es zu alt ist (Unterschied: 30991).
video_out: Verwerfe Bild mit pts 4686782, weil es zu alt ist (Unterschied: 27391).
video_out: Verwerfe Bild mit pts 4690382, weil es zu alt ist (Unterschied: 23791).
video_out: Verwerfe Bild mit pts 4693982, weil es zu alt ist (Unterschied: 20191).
video_out: Verwerfe Bild mit pts 4697582, weil es zu alt ist (Unterschied: 16591).
video_out: Verwerfe Bild mit pts 4701182, weil es zu alt ist (Unterschied: 12991).
video_out: Verwerfe Bild mit pts 4704782, weil es zu alt ist (Unterschied: 9391).
video_out: Verwerfe Bild mit pts 4708382, weil es zu alt ist (Unterschied: 5791).
200 Bilder angezeigt, 0 Bilder übersprungen, 10 Bilder verworfen
ffmpeg_video_dec: Vergrößere Puffer auf 447043 um Überlauf zu vermeiden.
.....
Display More
- Wer das ganze im Moment mit einer Intel X4500 oder Intel X4500 HD nachvollziehen will, hat Pech gehabt, denn der Chip wird im Moment von der Intel-Treiberseite her nicht mit vaapi-Codecs versorgt!
Na denn viel Spaß beim Nachbauen, wer Fragen hat, bitte hier posten.
Gruß
Wolfgang