Кіріспе

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 функциялары қолданылады: клиенттік бағдарлама суреттерді қайта-қайта дайындап, оларды масштабтау, түрлендіру және көрсету үшін графикалық аппаратқа жібереді.

Көрсетілім

Бейне масштабталғаннан және бейнекартада көрсетуге дайындалғаннан кейін, оны көрсету қажет. Осы кезеңде үдетілген бейнені көрсетудің бірнеше мүмкіндігі бар. Толық үдету бейне контроллері бейнені масштабтау, түрлендіру және салу үшін жауапты болғандықтан, қолданылатын техника бейне ненің үстіне салынатынына толығымен байланысты.

Терезе менеджерін қолдау және құрастыру рөлі

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++ тіліндегі тағы бір мысал.