X-videotillägg

X-videotillägget , ofta förkortat till XVideo eller Xv , tillhandahåller en videoutgångsmekanism för X Window System . Protokollet utvecklades ursprungligen av David Carver, och dess nuvarande version (den andra) skrevs i juli 1991 . Dess huvudsakliga syfte än i dag är hårdvaruskalning ( videokort antyds som utrustning ) av videon som spelas upp för att se den i helskärmsläge. Utan XVideo skulle detta arbete behöva utföras helt av den centrala processorn , vilket skulle kräva mer resurser och i vissa fall kan leda till långsam uppspelning eller bildförsämring. Dessutom använder X-videotillägget grafikkortet för färgrymdskonvertering . Med den kan du hårdvara justera ljusstyrkan, kontrasten och tonen för den visade videoströmmen.

För att använda denna tillägg är tre saker nödvändiga och tillräckliga:

De flesta moderna grafikkort ger den nödvändiga funktionaliteten för XVideo. De kallas vanligtvis hårdvarustöd för skalning och YUV -konverteringsacceleration, eller helt enkelt hårdvaruaccelererad 2D-grafik . X-server XFree86 (för UNIX, Linux och delvis Mac OS X-operativsystem) stöder XVideo-tillägget sedan version 4.0.2. För att se till att din X-server stöder detta tillägg kan du använda verktyget xdpyinfo . Och för att kontrollera att det aktuella grafikkortet stöder de nödvändiga funktionerna kan du använda programmet xvinfo .

Reproduktion och bearbetning

Populära videouppspelningsprogram som används i X Window som MPlayer , MythTV eller xine har vanligtvis redan stöd för utmatning av video via XVideo. Därför är det klokt att använda detta tillägg varhelst det installerade grafikkortet tillåter det och drivrutiner stöder det. Accelerationen kommer att märkas även på datorer med snabba processorer.

Trots att protokollet ger möjlighet att läsa och skriva videoströmmar från och till grafikkort är de mest efterfrågade funktionerna idag XvPutImage och XvShmPutImage . Klienter en efter en avkodar bildrutor och skickar dem till grafikkortet för hårdvaruskalning, konvertering och visning.

Visa

När bilden har skalats och förberetts är det enda som återstår att visa den. Det finns flera sätt att påskynda videoutdata i detta skede. Och eftersom full acceleration innebär att grafikkortet är ansvarigt för skalning, konvertering och utmatning av videon, kommer den specifika metoden att bero på var exakt bilden kommer att visas.

Rollen för den sammansatta fönsterhanteraren

Linux är den exakta visningsmetoden starkt beroende av vilken fönsterhanterare som används . Med korrekt installerade GPU -drivrutiner för grafikkort från Intel , ATI eller nVidia kan vissa fönsterhanterare, kallade kompositfönsterhanterare , användas för att hantera varje visat fönster oberoende. Detta uppnås genom att mata ut innehållet i varje fönster till en speciell buffert och sedan kombinera dem till en enda bild. Medan de enskilda fönstren renderas i sin egen buffert, kan videorenderad video läggas till dem vid denna tidpunkt via ett texturfilter, innan fönstret slutligen ritas. XVideo kan användas för att snabba upp videoutdata genom OpenGL Framebuffer Object eller pbuffer-tillägg.

Metacity- fönsterhanteraren implementerar denna metod. Blandning implementeras med hjälp av en 3D-grafikmaskinvaruaccelerationsfunktion, såsom GLX_EXT_texture_from_pixmap. Detta låter dig bland annat självständigt visa flera videoströmmar på en skärm. De andra sammansättningscheferna Beryl , Compiz och Compiz Fusion gör samma sak. Compiz Fusion ingår i Ubuntu Linux 7.10 och senare. Den aktiveras automatiskt om systemet upptäcker hårdvara som stöder det.

Men på datorer med begränsat hårdvarustöd för OpenGL, utan stöd för Framebuffer Object eller pbuffer, som på system som använder XGL , kommer Xv-tillägget inte att vara tillgängligt.

Färgnyckelfrågor

Anledningen till att fönsterhanterare inte direkt stöder blandning är att det är mycket svårt att avgöra var videoströmmen ska matas ut, eftersom innehållet på skärmen förvandlas till en enda bild under acceleration. Det enda sättet att tillhandahålla videoutdata är att använda en hårdvaruöverlagring med en färgknapp . När alla fönster har ritats är den enda information som finns tillgänglig om fönstren deras storlekar och koordinater. Men för att visa video behövs också information om hur och vilka fönster som överlappar varandra. För att göra detta målar program som spelar upp video över utmatningsområdet med enfärgad (säg, grön). Sedan, när alla fönster visas, kan de överlappande fönstren täcka en del av videospelarfönstret, men grafikkortet behöver bara skanna vissa skärmkoordinater och om det finns gröna prickar ska videoströmmen visas på denna plats. En liknande metod användes för hårdvaruaccelererad videoutmatning i Microsoft Windows XP (och tidigare), eftersom dess fönsterhanterare var så tätt integrerad med operativsystemet att det inte gick att snabba upp det själv.

Således, om fönsterhanteraren inte är sammansatt, används en färgkodad hårdvaruöverlagring för att mata ut video, som beskrivs i stycket ovan. Men att använda den här metoden kan göra det omöjligt att få en korrekt skärmdump med applikationer som använder Xvideo. Det kanske inte heller är möjligt att mata ut video till en andra bildskärm om endast en hårdvaruöverlagring stöds.

Problem med nya grafikkort

På grund av lanseringen av DirectX 10 har ett antal moderna grafikkort klippt eller ändrat stöd för texturöverlagring. Detta påverkade också grafikkorten i nVidia GeForce 8-serien. Alla GeForce 8800 grafikkort, inklusive 8800GT och 8800GTS, stöder nu endast en texturöverlagring på huvudskärmen. Som ett resultat kan de inte mata ut mer än en videoström ordentligt med hårdvaruacceleration, oavsett plattform.

Resultatet var dålig videouppspelning på icke-DirectX 10 operativsystem, inklusive Windows XP och Linux med XVideo. Dessa förändringar skadar också många sammansättningshanterare, inklusive Compiz och, till viss del, Metacity .

Se även

Länkar