2012-03-15 5 views
19

У меня есть приложение, которое обрабатывает видео, такие как цветовые преобразования, масштабирование и переводы с использованием OpenGL. Я в основном работаю с видео BGRA (1xGL_BGRA) или YUVA (4xGL_R), то есть в том числе альфой.Деинтерлейсинг графического процессора

Теперь я также хотел бы сделать высококачественную деинтерлейсинг. Я заметил, что Nvidia поддерживает высокое качество аппаратного ускоренного деинтерлейсинга через их функциональность «PureVideo». В основном то, что я хотел бы сделать, - это отправить чересстрочную текстуру OpenGL с количеством цветных каналов и вывести две прогрессивные текстуры.

Мой вопрос в том, как получить доступ к этой функции проще всего и наиболее эффективно (возможно, взаимодействовать с OpenGL)?

Я смотрел на DXVA и OpenMax, но оба они скорее сфокусированы на воспроизведении (а не на деинтерлейсе обработки, то есть необязательные параметры, такие как частота кадров должны быть установлены и т. Д.) И без альфа-форматов ...

+1

Что определяет 'высокое качество' деинтерлейсинга? Если вы просто хотите взять изображение и разделить его на две части с чередующимися рядами пикселей, вы можете сделать это довольно легко в шейдере, но я не эксперт по видео, и я не уверен, что это то, что вы имеете в виду. – Tim

+1

Я имею в виду что-то вдоль линий пространственно-временного деинтерлейсинга. То, что вы предлагаете, является ужасным качеством. – ronag

+1

Вы можете посмотреть здесь http://guru.multimedia.cx/deinterlacing-filters/, чтобы увидеть разницу между децентрализацией качества «высокий» и «низкий». – ronag

ответ

5

gStreamer libraries have good de-interlacing modules. Вы можете использовать модуль directshow для отображения результатов в окне или обработки самих кадров путем подключения к различным событиям. Мы используем это на данный момент для всех наших потребностей в обработке видео.

+2

Не похоже на gpu-ускорение. – ronag

+1

С gStreamer это зависит от модуля, который вы связываете с конвейером. Например, есть модуль gldeinterlace, который, например, ускорен GPU. На самом деле существует около 10 модулей GL различных типов, которые вы можете связать. – Robinson

+0

Я alrdy, используя ffmpeg yadif deinterlace, который, кажется, имеет лучшее качество, чем предлагает gStreamer. – ronag

3

Основываясь на ваших уточненных требованиях, это выглядит так: VDPAU - это самое близкое соответствие с тем, что вы желаете. Усложнение: это для операционных систем на базе Unix, а не для Windows.

Если вы заперты в Windows, DXVA - это путь. Если вы работаете в кросс-платформенной среде, OpenMAX - это путь. И если вы открыты для предложений, помимо тех, которые вы уже задали в своем вопросе, стоит преследовать the rest of these.

+0

Это не добавляет ничего, кроме подтверждения, что мне, вероятно, нужно использовать DXVA или OpenMax, о чем я говорил в моем вопросе. Хотя ни один из них, похоже, не имеет простого способа делать то, что я хочу, и не поддерживает какие-либо форматы с альфой. – ronag

+0

@ronag На самом деле, действительно. Обратите внимание, что лучшее, что я могу сделать, это самое близкое совпадение, потому что ваш запрос неудовлетворен для пересечения «Windows & Alpha & Hardware Support». Самый простой из этих ограничений, чтобы расслабиться в среде разработки, «Windows», дает вам инструмент, который ранее не был доведен до обсуждения. VDPAU поддерживается Nvidia и [похоже, имеет альфа-поддержку] (http://http.download.nvidia.com/XFree86/vdpau/doxygen/html/group__misc__types.html). Я не считаю, что ваш запрос в противном случае выполним, не сворачивая собственное решение или не расширяя существующие. – MrGomez

+0

К сожалению, требуется окно. Хотя интересно, что VDPAU имеет альфа-поддержку. – ronag

0

Пункт 1: вам нужно будет перейти через DirectX, если вы хотите иметь аппаратное ускорение деинтерлейсинга с хорошим качеством.

Пункт 2: помимо названий, названных другими (DXVA и OpenMAX), есть, по крайней мере, Intel Media SDK для ускоренного деинтерлейса Quicksync, который не был назван, и который предлагает деинтерлейсинг для каждого кадра посредством предварительной обработки видео VPP фильтры.

Пункт 3: Для того, чтобы перейти от DirectX на OpenGL на NVidia: http://developer.download.nvidia.com/opengl/specs/WGL_NV_DX_interop.txt

Смежные вопросы