Кіріспе
X терезесі жүйесі үшін бейне шығару механизмі, сондай-ақ ұқсас атаумен веб-сайт бар. X бейне кеңейтуі, көбінесе XVideo немесе Xv деп қысқартылады, X терезесі жүйесі үшін бейне шығару механизмі болып табылады. Протоколды Дэвид Карвер жасаған, ал протоколдың 2-ші нұсқасының сипаттамасы 1991 жылдың шілдесінде жазылған. Бүгінгі күні ол негізінен бейне контроллерінің аппараттық құралдарында бейне контентінің мөлшерін өзгерту үшін, яғни бейнені үлкейту үшін немесе толық экранды режимде көру үшін қолданылады. XVideo болмаса, X процессорда масштабтауды орындауға мәжбүр болар еді. Бұл процессордың үлкен қуатын қажет етеді, ол бейне ағынын баяулатуы немесе нашарлатуы мүмкін. Бейне контроллерлер осы есептеулер үшін арнайы жасалған, сондықтан оларды әлдеқайда тиімдірек орындай алады. Сол сияқты, X бейне кеңейтуі бейне контроллеріне түс кеңістігін түрлендіруге, сондай-ақ көрсетіліп жатқан бейне ағынының контрастын, жарықтығын және түсін өзгертуге мүмкіндік береді. Бұл үшін үш нәрсе қатар келуі керек: бейне контроллері қажетті функцияларды ұсынуы керек, бейне контроллері мен X дисплей серверінің драйвері XVideo интерфейсін іске асыруы керек, ал бейне ойнату бағдарламалық жасақтамасы осы интерфейсті пайдалануы керек. Көптеген қазіргі заманғы бейне контроллерлер XVideo үшін қажетті функцияларды ұсынады; бұл мүмкіндік аппараттық масштабтау және YUV үдетуі немесе кейде 2D аппараттық үдетуі деп аталады. XFree86 X дисплей сервері 4.0.2 нұсқасынан бастап XVideo-ны іске асырды. X дисплей серверінің XVideo-ны қолдайтынын тексеру үшін xdpyinfo утилитасын пайдалануға болады. Видео контроллері қажетті функцияларды ұсына ма және X драйвері олардың кез келгені үшін XVideo-ны іске асыра ма, жоқ па, оны тексеру үшін xvinfo бағдарламасын пайдалануға болады. X терезесі жүйесінде жұмыс істейтін MPlayer, MythTV немесе xine сияқты бейне ойнату бағдарламалары әдетте XVideo шығысын қосу опциясын ұсынады. Егер жүйелік GPU бейне жабдықтары мен драйверлері XVideo-ны қолдайтын болса және OpenGL және VDPAU сияқты жаңа рендеринг жүйелері қол жетімді болмаса, бұл опцияны қосу ұсынылады – жылдамдық айырмасы тіпті жылдам процессорда да байқалады. Протоколдың өзі бейне ағындарын видео адаптерлерден оқу және жазу мүмкіндіктерін ұсынса да, қазіргі таңда іс жүзінде тек XvPutImage және XvShmPutImage функциялары қолданылады: клиенттік бағдарлама суреттерді қайта-қайта дайындап, оларды масштабтау, түрлендіру және көрсету үшін графикалық аппаратқа жібереді.
the website with a similar name
The X video extension, often abbreviated as XVideo or Xv, is a video output mechanism for the X Window System. The protocol was designed by David Carver; the specification for version 2 of the protocol was written in July 1991. It is mainly used today to resize video content in the video controller hardware in order to enlarge a given video or to watch it in full screen mode. Without XVideo, X would have to do this scaling on the main CPU. That requires a considerable amount of processing power, which could slow down or degrade the video stream; video controllers are specifically designed for this kind of computation, so can do it much more cheaply. Similarly, the X video extension can have the video controller perform color space conversions, and change the contrast, brightness, and hue of a displayed video stream. In order for this to work, three things have to come together:
The video controller has to provide the required functions. The device driver software for the video controller and the X display server program have to implement the XVideo interface. The video playback software has to make use of this interface. Most modern video controllers provide the functions required for XVideo; this feature is known as hardware scaling and YUV acceleration or sometimes as 2D hardware acceleration. The XFree86 X display server has implemented XVideo since version 4.0.2. To check whether a given X display server supports XVideo, one can use the utility xdpyinfo. To check whether the video controller provides the required functions and whether the X device driver implements XVideo for any of them, one can use the xvinfo program. Video playback programs that run under the X Window system, such as MPlayer, MythTV or xine, typically have an option to enable XVideo output. It is very advisable to switch on this option if the system GPU video hardware and device drivers supports XVideo and more modern rendering systems such as OpenGL and VDPAU are unavailable – the speedup is very noticeable even on a fast CPU. While the protocol itself has features for reading and writing of video streams from and to video adapters, in practice today only the functions XvPutImage and XvShmPutImage are used: the client program repeatedly prepares images and passes them on to the graphics hardware to be scaled, converted and displayed.
Көрсетілім
Бейне масштабталғаннан және бейнекартада көрсетуге дайындалғаннан кейін, оны көрсету қажет. Осы кезеңде үдетілген бейнені көрсетудің бірнеше мүмкіндігі бар. Толық үдету бейне контроллері бейнені масштабтау, түрлендіру және салу үшін жауапты болғандықтан, қолданылатын техника бейне ненің үстіне салынатынына толығымен байланысты.
Терезе менеджерін қолдау және құрастыру рөлі
X-те бейне қалай көрсетіледі деген мәселе көбінесе қолданылып жатқан X терезе менеджеріне байланысты. Дұрыс орнатылған драйверлер мен Intel, ATI және nVidia сияқты қолдау көрсетілетін GPU аппараттық құралдары болғанда, кейбір терезе менеджерлері, композициялық терезе менеджерлері деп аталады, терезелерді жеке өңдеуге және содан кейін рендерингтеуге (немесе композициялауға) мүмкіндік береді. Бұл барлық терезелерді алдымен жадтағы бөлек шығыс буферлеріне салуды, содан кейін толық графикалық интерфейсті құру үшін біріктіруді қамтиды. (Бейне) жадта терезелер жеке түрлендірілуі мүмкін, ал терезе композицияланып, көрсетілмес бұрын осы кезеңде текстуралық сүзгі арқылы жылдамдырылған бейне қосылуы мүмкін. XVideo терезелерді көрсету кезінде OpenGL Framebuffer Object немесе pbuffer арқылы бейне ойнатуды жылдамдату үшін де пайдаланылуы мүмкін. Metacity, X терезе менеджері осылайша композициялауды қолданады. Композициялау 3D құбырларын жылдамдатуды, мысалы, pixmap-тен GLX EXT текстурасын пайдалануға да мүмкіндік береді. Бұл процеске көптеген бейне шығыстарын бір-біріне кедергі келтірмей бір экранмен бөлісуге болады. Compiz сияқты басқа композициялық терезе менеджерлері де композициялауды қолданады. Дегенмен, шектеулі OpenGL жылдамдату мүмкіндігі бар жүйеде, әсіресе OpenGL Framebuffer Object немесе pbuffer болмаған жағдайда, Xgl сияқты OpenGL ортасын пайдалану xv аппараттық жылдамдатуын мүмкін емес етеді.
Хрома-кейннің кемшіліктері
Терезе менеджері композицияны тікелей қолдамаса, бейне ағынын қай жерде көрсету керектігін анықтау қиынырақ, себебі оны жылдамдатуға болатын кезде шығыс бір суретке айналып қояды. Мұны істеудің жалғыз жолы – хрома кейін қолданып, кейін өңдеу аппараттық жапсырмасын пайдалану. Барлық терезелер салынғаннан кейін, бізде бейне терезесінің өлшемі мен орналасуы туралы ғана ақпарат болады. Видео терезесінің қай бөліктері басқа терезелермен жасырылғанын және қайсысы жасырылмағанын көрсету үшін үшінші ақпарат қажет. Сондықтан, бейне ойнатқыш өз кенепін бір түспен (жасыл дейік) салады, ал бұл түс уақытша үшінші өлшем рөлін атқарады. Барлық терезелер салынғаннан кейін, бейне ойнатқышты жабатын терезелер жасыл түсті жасырады. Бейне ағыны шығысқа қосылғанда, графикалық карта кенептің координаттарын қарап шыға алады. Егер ол жасыл түске тап болса, бейне терезесінің көрінетін бөлігін тапқанын біледі және тек соның ғана бөліктерін салады. Бұл әдіс Microsoft Windows XP және одан бұрынғы нұсқаларда аппараттық үдетілген бейнелерді көрсетудің жалғыз мүмкіндігі болды, өйткені оның терезелерді басқару мүмкіндіктері операциялық жүйеге тым терең енгендіктен, оларды үдету мүмкін емес еді. Егер терезе менеджері композицияны қолдамаса, жоғарыда сипатталғандай хрома кейін пайдалана отырып, кейін өңдеу аппараттық жапсырмалары Xvideo қолданбаларының дұрыс скриншоттарын жасауға кедерілтеу тудыруы мүмкін. Сондай-ақ, құрылғыда тек бір ғана жапсырмаға рұқсат берілген жағдайда, екінші дисплейде осы типтегі ойнатуды көру мүмкін болмайды.
Үлгі бағдарламалары
testxv.c: Көптеген орнатуларда ол "gcc -o testxv testxv.c -L/usr/X11R6/lib -lX11 -lXext -lXv" арқылы жинақталады.
testxv2.cc: C++ тіліндегі тағы бір мысал.
testxv2. cc: another example in C++