2013-08-16 4 views
2

Я ищу образец шейдерного кода фрагмента GLSL, который может конвертировать RGB-кадр (например, формат пикселей в формате ARGB) в YUV (скажем, YUV420).

Представьте себе рамку RGB размером 1920x1080. Мне нравится использовать фрагментарный шейдер, чтобы преобразовать его в кадр YUV.
RGB to YUV с помощью GLSL

Можете ли вы указать мне код, который можно скомпилировать и запустить в поле UBuntu?

ответ

2

Во-первых, вы должны знать, что ваш вопрос плохо сформулирован. Никто не собирается писать вам образец кода. Вы можете использовать поисковую систему (или даже искать этот сайт) для преобразования кода из RGB в YUV.

Я написал ответ, похожий на то, что вы ищете here. Он преобразуется из RGB в YIQ, делает некоторое смещение оттенка и преобразует обратно. Вы можете использовать матрицу Y'CbCr для преобразования цвета вместо YIQ, если это то, что вам нужно.

Это не преобразование вниз в 4: 2: 0. Однако это должно быть достаточно легко сделать. Как только он находится в формате Y'CbCr, вы можете сжать соответствующие каналы по своему усмотрению. Я рекомендую сначала выполнить фильтр нижних частот на этом канале, чтобы избежать артефактов сглаживания.

Я не работаю с Linux, поэтому не тестировал Ubuntu. Удачи.

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