Расширение X-видео
Оригинальный автор(ы) | Фонд X.Org |
---|---|
Стабильная версия | 2.0
/ 25 июля 1991 г |
Расширение X video , часто сокращенно XVideo или Xv , представляет собой механизм вывода видео для системы X Window . Протокол был разработан Дэвидом Карвером; спецификация версии 2 протокола была написана в июле 1991 года. [ 1 ] Сегодня он в основном используется для изменения размера видеоконтента в аппаратном обеспечении видеоконтроллера, чтобы увеличить данное видео или просмотреть его в полноэкранном режиме. Без XVideo X пришлось бы выполнять это масштабирование на основном процессоре. Это требует значительной вычислительной мощности, что может замедлить или ухудшить видеопоток; видеоконтроллеры специально разработаны для такого рода вычислений, поэтому могут выполнять их гораздо дешевле. Аналогичным образом, расширение X-video может заставить видеоконтроллер выполнять преобразования цветового пространства и изменять контрастность, яркость и оттенок отображаемого видеопотока.
Чтобы это сработало, должны совпасть три вещи:
- Видеоконтроллер должен обеспечивать необходимые функции.
- Программное обеспечение драйвера устройства для видеоконтроллера и программа сервера дисплея X должны реализовывать интерфейс XVideo.
- Программное обеспечение для воспроизведения видео должно использовать этот интерфейс.
Большинство современных видеоконтроллеров предоставляют функции, необходимые для XVideo; эта функция известна как аппаратное масштабирование и YUV- ускорение или иногда как аппаратное 2D-ускорение . Сервер отображения XFree86 X реализует XVideo начиная с версии 4.0.2. Чтобы проверить, поддерживает ли данный X-сервер отображения XVideo, можно использовать утилиту xdpyinfo
. Чтобы проверить, предоставляет ли видеоконтроллер необходимые функции и реализует ли драйвер X-устройства XVideo для какой-либо из них, можно использовать команду xvinfo
программа.
Программы воспроизведения видео, работающие в системе X Window, такие как MPlayer , MythTV или xine , обычно имеют возможность включить вывод XVideo. Очень желательно включить эту опцию, если системное видеооборудование графического процессора и драйверы устройств поддерживают XVideo, а более современные системы рендеринга, такие как OpenGL и VDPAU, недоступны — ускорение очень заметно даже на быстром процессоре .
Хотя сам протокол имеет функции чтения и записи видеопотоков с и на видеоадаптеры, на практике сегодня только функции XvPutImage
и XvShmPutImage
используются: клиентская программа неоднократно подготавливает изображения и передает их графическому оборудованию для масштабирования, преобразования и отображения.
Отображать
[ редактировать ]После того как видео было масштабировано и подготовлено к отображению на видеокарте, его необходимо отобразить. На данном этапе существует несколько возможных способов отображения ускоренного видео. Поскольку полное ускорение означает, что за масштабирование, преобразование и отрисовку видео отвечает видеоконтроллер, используемый метод полностью зависит от того, на что отрисовывается видео.
Роль поддержки и композитинга оконного менеджера
[ редактировать ]В X то, как в конечном итоге отрисовывается видео, во многом зависит от оконного менеджера X. используемого При правильно установленных драйверах и оборудовании графического процессора , таком как поддерживаемые Intel , ATI и nVidia наборы микросхем , некоторые оконные менеджеры , называемые композитными оконными менеджерами , позволяют отдельно обрабатывать окна, а затем отображать их (или компоновать). При этом все окна сначала визуализируются в отдельных выходных буферах в памяти, а затем объединяются для формирования полноценного графического интерфейса. Находясь в (видео) памяти, отдельные окна могут быть преобразованы отдельно, а ускоренное видео может быть добавлено на этом этапе с использованием фильтра текстур, прежде чем окно будет скомпоновано и отрисовано. XVideo также можно использовать для ускорения воспроизведения видео во время отрисовки окон с использованием объекта OpenGL Framebuffer или pbuffer.
Metacity , оконный менеджер X, использует композицию таким образом. При композитинге также можно использовать ускорения 3D-конвейеров, такие как GLX_EXT_texture_from_pixmap. Помимо прочего, этот процесс позволяет множеству видеовыходов использовать один и тот же экран, не мешая друг другу. Другие оконные менеджеры композитинга, такие как Compiz, также используют композитинг.
Однако в системе с ограниченной функцией ускорения OpenGL, в частности отсутствием объекта OpenGL Framebuffer или pbuffer , использование среды OpenGL, такой как Xgl, делает аппаратное ускорение xv невозможным.
Недостатки хромакейинга
[ редактировать ]Если оконный менеджер напрямую не поддерживает композицию, сложнее определить, где следует визуализировать видеопоток, поскольку к тому моменту, когда его можно ускорить, выходные данные уже будут преобразованы в одно изображение. Единственный способ сделать это – обычно использовать аппаратное наложение постобработки с использованием хроматической манипуляции . После того, как все окна уже нарисованы, единственная доступная нам информация — это размер и положение холста видеоокна. Третья часть информации необходима для указания того, какие части полотна видеоокна скрыты другими окнами, а какие нет. Таким образом, видеоплеер рисует свой холст, используя сплошной цвет (скажем, зеленый), и этот цвет становится импровизированным третьим измерением. Когда все окна будут нарисованы, окна, закрывающие видеоплеер, будут блокировать зеленый цвет. Когда видеопоток добавляется на выход, видеокарта может просто сканировать координаты холста. Когда он встречает зеленый цвет, он знает, что нашел видимую часть видеоокна, и рисует только эти части видео. Этот же процесс был единственным доступным вариантом рендеринга видео с аппаратным ускорением под Microsoft Windows XP и более ранние версии, поскольку ее функции управления окнами были настолько глубоко встроены в операционную систему, что их ускорение было невозможно.
Если оконный менеджер не поддерживает композицию, постобработанные аппаратные наложения с использованием хроматической рирпроекции , как описано в предыдущем параграфе, могут сделать невозможным создание правильных снимков экрана приложений Xvideo. Это также может сделать невозможным просмотр такого типа воспроизведения на дополнительном дисплее, если на аппаратном уровне разрешено только одно наложение.
См. также
[ редактировать ]Ссылки
[ редактировать ]Внешние ссылки
[ редактировать ]- Официальная спецификация расширения X Video, версия 2.0
- Дополнения в XVideo версии 2.2
- XV справочные страницы
Примеры программ
[ редактировать ]- testxv.c : в большинстве установок он компилируется "
gcc -o testxv testxv.c -L/usr/X11R6/lib -lX11 -lXext -lXv
" - testxv2.cc : еще один пример на C++.