Кіріспе
X бейне кеңейтуінің кеңейтілуі – X бейне қозғалыс компенсациясы (XvMC) – X терезесі жүйесі үшін X бейне кеңейтуінің (Xv) кеңейтілуі болып табылады. XvMC API бейне бағдарламаларына бейне декодтау процесінің бөліктерін GPU бейне аппараттық құралдарына жүктеуге мүмкіндік береді. Теориялық тұрғыдан алғанда, бұл процесс автобус өткізу қабілетіне қойылатын талаптарды да азайтуға тиіс. Қазіргі уақытта XvMC GPU-ға жүктеуді қолдайтын бөліктер – MPEG 2 бейнесі үшін қозғалыс компенсациясы (mo comp) және кері дискретті косинус түрлендіруі (iDCT). XvMC сонымен қатар VIA Unichrome (S3 Graphics Chrome Series) аппараттық құрылғыларында MPEG 2 ғана емес, сонымен қатар MPEG 4 ASP бейнесі үшін mo comp, iDCT және VLD ("Айнымалы ұзындығының декодтауы", көбінесе "кесімдік деңгейдегі үдету" деп аталады) декодтауын жүктеуді қолдайды. XvMC Microsoft Windows DirectX Video Acceleration (DxVA) API-нің UNIX-тағы алғашқы баламасы болды. XvMC-ді пайдаланатын танымал бағдарламалық қамтамастарға MPlayer, MythTV және xine жатады.
X Video Motion Compensation (XvMC), is an extension of the X video extension (Xv) for the X Window System. The XvMC API allows video programs to offload portions of the video decoding process to the GPU video hardware. In theory this process should also reduce bus bandwidth requirements. Currently, the supported portions to be offloaded by XvMC onto the GPU are motion compensation (mo comp) and inverse discrete cosine transform (iDCT) for MPEG 2 video. XvMC also supports offloading decoding of mo comp, iDCT, and VLD ("Variable Length Decoding", more commonly known as "slice level acceleration") for not only MPEG 2 but also MPEG 4 ASP video on VIA Unichrome (S3 Graphics Chrome Series) hardware. XvMC was the first UNIX equivalent of the Microsoft Windows DirectX Video Acceleration (DxVA) API. Popular software applications known to take advantage of XvMC include MPlayer, MythTV, and xine.
Құрылғы драйверлері
XvMC бейне үдетуіне қолдау көрсететін әрбір аппараттық бейне GPU, осы мүмкіндіктерді пайдалану үшін X11 бағдарламалық құрылғы драйверін қажет етеді.
Nvidia
Қазіргі уақытта үш X11 Nvidia драйвері қол жетімді: Nvidia компаниясы күтіп қана тұратын, ашық бастапқы коды бар, бірақ түсініксіз nv драйвері, Nvidia компаниясының меншік бинарлық драйвері және Linux қауымдастығы бинарлық драйверді кері инженериялау негізінде әзірлеген Nouveau ашық бастапқы драйвері. Nouveau XvMC қолдауын дамытпайды, 2D nv драйвері XvMC-ді қолдамайды, ал Nvidia компаниясының ресми меншік бинарлық драйвері GeForce 7000 сериясына дейінгі аппараттық құралдарда ғана MPEG 2 жүктемесін (mo comp және iDCT) қолдайды.
ААЖ
VIA өзiнiң кейбiр VIA Unichrome (S3 Graphics Chrome Series) аппараттық құрылғылары үшін ашық бастапқы коды бар құрылғы драйверлерiн ұсынады, MPEG 2 және MPEG 4 ASP бейнелерiн жеңiлдетуді қолдайды. VLD деңгейiндегi кодтаудың арқасында VIA, тек iDCT немесе mo comp деңгейлерiн қолдайтын GPU-ға қарағанда, процессордан әлдеқайда көп кодтау жұмысын өзiне жүктейдi. Барлық құрылғылар қолдау көрсетiлмейтiнiн және басқа да шектеулер бар екенiн есте сақтаңыз.
Ақпараттық мәлімет
Intel компаниясы Intel компаниясының 8xx/9xx сериялы интеграцияланған графикалық чиптерінде MPEG 2 декодтауын (mo comp және iDCT) қолдайтын ресми ашық бастапқы кодты құрылғы драйверлерін ұсынады.
ATI/AMD
ATI компаниясы Rage 128 графикалық карталарында MPEG 2 үдеуін қамтамасыз еткен алғашқы өндіруші болғанымен, оны қалай пайдалану туралы ешқашан құжаттама ұсынбады. Сондықтан XvMC қолжетімді емес және, мүмкін, ешқашан болмайды. XvMC Radeon 4000 карталарында (UVD бар) Catalyst драйверімен 8.10 нұсқасынан бастап тәжірибелік деңгейде қолдалады (яғни, ол "қораптан шығарып жұмыс істемейді"). (Қосымша X Video биттік ағын үдеуіне де қараңыз). Басқа ATI/AMD жабдықтарында қозғалыс компенсациясын қолдау болашақта жоспарлануда. (Қазіргі таңдағы барлық жабдықтар iDCT және mo comp деңгейлерінде MPEG 2 үдеуін қолдайды).
Матрокс
Matrox аппараттарында XvMC қолдайтын құрылғы драйверлері жоқ (дегенмен, Matrox Parhelia аппараттарында MPEG 2 үдетуі mo comp деңгейінде қолдау бар).
S3
S3 екілік құрылғы драйвері Chrome 20 GPU-ларындағы бастапқы 2.0.16 драйверінде ғана MPEG 2 декодилеуін қолдайды.
XvMC API техникалық шолу
Бұл X Vxvideo қозғалыс компенсациясы API спецификациясы v. 1.0
XvPort- тің атауы
XvMC X бейне кеңейтуін (Xv) кеңейтеді және таныс XvPort тұжырымдамасын қолданады. Порттардың Xv арқылы орнатылатын және сұралатын атрибуттары болады. XvMC порттарында олармен бірге пайдалану үшін аппараттық қозғалыс компенсациясы контексттері құрылуы мүмкін. XvImages қолдайтын порттар (яғни, Xv 2.2 API қосымшасында сипатталғандай "XV IMAGE" портты кодтауы бар порттар) қолдайтын XvMCSurface типтерінің тізімін сұрауға болады. Егер олар кез келген XvMCSurface типін қолдайтын болса, онда сол порт үшін XvMCContext құруға болады.
XvMCC мәнмәтіні
XvMCContext қозғалыс өтемақысының құбырының күйін сипаттайды. Жеке XvMCContext бір порт, бет түрі, қозғалыс өтемақысы түрі, ені және биіктігінің комбинациясы үшін жасалуы мүмкін. Мысалы, 720 x 480 4:2:0 беттерінде MPEG 2 қозғалысын өтемақылайтын белгілі бір порт үшін контекст құрылуы мүмкін. Контекст құрылғаннан кейін оған сілтеме жасау портты, бет түрін, мөлшерін және қозғалыс өтемақысы түрін білдіреді. Контексттер "тікелей" немесе "тікелей емес" болуы мүмкін. Тікелей емес контексттер үшін X дисплей сервері клиенттен алынған деректерді пайдаланып барлық бейнені көрсетіп береді. Тікелей контексттер үшін клиенттік кітапханалар X дисплей серверімен минималды немесе ешқандай өзара әрекеттеспей бейнені көрсетіп береді.
XvMCS беттері
XvMCS беттері — қозғалыс компенсациясы аппараттық құралдарының рендерлеуіне арналған буферлер. Буферлердегі деректер клиенттерге қолжетімді емес және аппараттық ерекше форматта сақталуы мүмкін. Белгілі бір контекст үшін (ресурстар жеткілікті болса) кез келген санда буферлер құруға болады.
Видео желісі
XvMC бейне құбыржолындағы екі нүктенің бірінен басталатын бейне үдетуді қамтамасыз етеді. Бірінші нүктеден басталатын үдету, біз оны "Қозғалыс өтеуі" деңгейі деп атаймыз, кері кванттаудан және IDCT-ден кейін, қозғалыс өтеуі қолданылатын жерде басталады. Екінші нүкте, біз оны "IDCT" деңгейі деп атаймыз, кері кванттаудан кейін, IDCT-ге дейін басталады.
Рендеринг
Рендеринг мақсатты XvMCS бетін, қозғалыс өтемақысы үшін екіге дейін XvMCS бетін, 8x8 блоктар буферін және мақсатты XvMCS бетіндегі деректерді құру үшін 8x8 блоктары мен қозғалыс өтемақысы векторларын қалай пайдалану керектігін сипаттайтын команда буферін кітапханаға ұсыну арқылы жүзеге асырылады. Егер құбыр iDCT деңгейінен басталатын болса, Xv қозғалыс өтемақысын орындамас бұрын блоктарға IDCT қолданады. XvMCS бетінің бөлігін кез келген масштабтағы сурет бетіне көшіру/жабу функциясы қарастырылған.
XvMCSөнерлеу
XvMC субсуреттері – нысана бетімен үйлестірілуі мүмкін жеке беттер. Контекстпен пайдалану үшін кез келген мөлшерде XvMC субсуреттерін жасауға болады (ресурстар жеткілікті болса). "Бекенд" және "Фронтэнд" субсуреттерінің мінез-құлқы да қолдау көрсетіледі.