X-videoudvidelse

X-videoudvidelsen , ofte forkortet til XVideo eller Xv , giver en videooutputmekanisme til X Window System . Protokollen blev oprindeligt udviklet af David Carver, og dens nuværende version (den anden) blev skrevet i juli 1991 . Dens hovedformål den dag i dag er fortsat hardware-skalering ( videokort er underforstået som udstyr ) af den video, der afspilles for at se den i fuldskærmstilstand. Uden XVideo skulle dette arbejde udelukkende udføres af den centrale processor , hvilket ville kræve flere ressourcer og i nogle tilfælde kunne føre til langsom afspilning eller billedforringelse. Derudover bruger X-videoudvidelsen videokortet til konvertering af farverum . Med den kan du hardware justere lysstyrken, kontrasten og tonen i den viste videostream.

For at bruge denne udvidelse er tre ting nødvendige og tilstrækkelige:

De fleste moderne grafikkort giver den nødvendige funktionalitet til XVideo. De omtales almindeligvis som hardwareunderstøttelse til skalering og YUV -konverteringsacceleration eller blot hardwareaccelereret 2D-grafik . X-server XFree86 (til UNIX, Linux og delvist Mac OS X-operativsystemer) understøtter XVideo-udvidelsen siden version 4.0.2. For at sikre, at din X-server understøtter denne udvidelse, kan du bruge værktøjet xdpyinfo . Og for at kontrollere, at det aktuelle videokort understøtter de nødvendige funktioner, kan du bruge programmet xvinfo .

Reproduktion og forarbejdning

Populære videoafspilningsprogrammer, der bruges i X-vinduet, såsom MPlayer , MythTV eller xine , har normalt allerede understøttelse til at udsende video via XVideo. Derfor er det klogt at bruge denne udvidelse, hvor det installerede grafikkort tillader det, og drivere understøtter det. Accelerationen vil være mærkbar selv på computere med hurtige processorer.

På trods af at protokollen giver mulighed for at læse og skrive videostreams fra og til videokort, er de mest efterspurgte funktioner i dag XvPutImage og XvShmPutImage . Klienter afkoder en efter en frames og sender dem til videokortet til hardwareskalering, konvertering og visning.

Vis

Når billedet er blevet skaleret og forberedt, er der kun tilbage at vise det. Der er flere måder at fremskynde videooutput på dette stadium. Og da fuld acceleration indebærer, at videokortet er ansvarlig for skalering, konvertering og output af videoen, vil den specifikke metode afhænge af, hvor nøjagtigt billedet vil blive vist.

Rollen for den sammensatte vinduesmanager

Linux er den nøjagtige visningsmetode meget afhængig af, hvilken vindueshåndtering der bruges . Med korrekt installerede GPU -drivere til grafikkort fra Intel , ATI eller nVidia kan visse vinduesadministratorer, kaldet sammensatte vinduesadministratorer , bruges til at håndtere hvert vist vindue uafhængigt. Dette opnås ved at udlæse indholdet af hvert vindue til en speciel buffer og derefter kombinere dem til et enkelt billede. Mens de enkelte vinduer gengives i deres egen buffer, kan video-renderet video tilføjes til dem på dette tidspunkt via et teksturfilter, før vinduet til sidst tegnes. XVideo kan bruges til at fremskynde videooutput gennem OpenGL Framebuffer Object eller pbuffer extensions.

Metacity window manager implementerer denne metode. Blanding implementeres ved hjælp af en 3D-grafikhardwareaccelerationsfunktion, såsom GLX_EXT_texture_from_pixmap. Dette giver dig blandt andet mulighed for selvstændigt at vise flere videostreams på én skærm. Det samme gør de andre compositing managers Beryl , Compiz og Compiz Fusion . Compiz Fusion er inkluderet i Ubuntu Linux 7.10 og nyere. Den aktiveres automatisk, hvis systemet registrerer hardware, der understøtter det.

På computere med begrænset hardwareunderstøttelse til OpenGL, uden Framebuffer Object eller pbuffer-understøttelse, som på systemer, der bruger XGL , vil Xv-udvidelsen dog ikke være tilgængelig.

Farve nøgleproblemer

Grunden til, at vinduesadministratorer ikke direkte understøtter blanding, er, at det er meget svært at bestemme, hvor videostrømmen skal udsendes, for under acceleration bliver skærmens indhold til et enkelt billede. Den eneste måde at levere videooutput på er at bruge et hardwareoverlay ved hjælp af en farvetast . Når alle vinduerne er tegnet, er den eneste tilgængelige information om vinduerne deres størrelser og koordinater. Men for at vise video er der også brug for information om hvordan og hvilke vinduer der overlapper hinanden. For at gøre dette skal programmer, der afspiller video, male over outputområdet med en ensfarvet (f.eks. grøn). Derefter, når alle vinduer vises, kan de overlappende vinduer dække en del af videoafspillerens vindue, men videokortet skal kun scanne visse skærmkoordinater, og hvis der er grønne prikker, skal videostrømmen vises på dette sted. En lignende metode blev brugt til hardwareaccelereret videooutput i Microsoft Windows XP (og tidligere), fordi dens vindueshåndtering var så tæt integreret med operativsystemet, at det ikke var muligt at fremskynde det selv.

Hvis vindueshåndteringen ikke er sammensat, bruges et farvenøglet hardware-overlay til at udsende video, som beskrevet i afsnittet ovenfor. Brug af denne metode kan dog gøre det umuligt at få et korrekt skærmbillede med programmer, der bruger Xvideo. Det er muligvis heller ikke muligt at udsende video til en anden skærm, hvis kun én hardwareoverlay er understøttet.

Problemer med nye grafikkort

På grund af udgivelsen af ​​DirectX 10 har en række moderne grafikkort skåret eller ændret teksturoverlejring. Dette påvirkede også nVidia GeForce 8-seriens videokort. Alle GeForce 8800-skærmkort, inklusive 8800GT og 8800GTS, understøtter nu kun én teksturoverlejring på hovedskærmen. Som et resultat kan de ikke korrekt udsende mere end én videostream ved hjælp af hardwareacceleration, uanset platform.

Resultatet var dårlig videoafspilning på ikke-DirectX 10-operativsystemer, inklusive Windows XP og Linux ved hjælp af XVideo. Disse ændringer skader også mange sammensætningsledere, herunder Compiz og til en vis grad Metacity .

Se også

Links