ffmpeg Cg-шейдер ITU 709 YCbYg

У меня есть программа просмотра (mrViewer на sourceforge), которая отображает файлы фильмов, подавая изображения YCbCr и объединяя их позже в шейдер. В настоящее время я пытаюсь отследить проблему с цветом в моем средстве просмотра, неправильно отображающую фильмы DNxHD. Файл EXR должен быть виден в RGB, а не в линейной сцене. Фильм был создан из этого EXR-файла в Nuke (программа Comp). Все файлы фильмов конвертируются из изображения EXR без преобразования цветового пространства в NUKE 11. Все файлы фильмов кодируются с использованием цветового диапазона видео.

Color_Profile_nuke11.exr

Color_Profile_nuke11_DNxHD_mov64_444.mov

Color_Profile_nuke11_DNxHD_mov64_422.mov

В шейдере я делаю (упрощенный код Cg):

  half3 pre;

pre.r = tex2D(YImage, tc).r;  // Y
pre.g = tex2D(UImage, tc).r;  // U
pre.b = tex2D(VImage, tc).r;  // V

half3 c;

if ( coeffs )
{
pre += Koff;

c.r = dot(Kr, pre);
c.g = dot(Kg, pre);
c.b = dot(Kb, pre);
}
else
{

half3 yuv;

yuv.r = 1.1643 * ( pre.r - 0.0625 );
yuv.g = pre.g - 0.5;
yuv.b = pre.b - 0.5;

c.r = yuv.r + 1.5958 * yuv.b;
c.g = yuv.r - 0.39173 * yuv.g - 0.81290 * yuv.b;
c.b = yuv.r + 2.017 * yuv.g;
}

Out output;
output.pixel = c;
return output;// Send coeffs to shader shader (C++ code)
{
_shader->setUniform( "coeffs", 1 );
// HDTV  YCbCr coefficients
_shader->setUniform( "Koff", 0.0f, -0.5f, -0.5f );
_shader->setUniform( "Kr", 1.0f, 0.0f, 1.28033f );
_shader->setUniform( "Kg", 1.0f, -0.21482f, -0.38059f );
_shader->setUniform( "Kb", 1.0f, 2.12798f, 0.0f );
}

Теперь моя проблема заключается в том, что МСЭ 709 (тот, с dot() звонки) путь вроде не ведёт себя правильно. Создает размытое изображение. Мне интересно, если это связано с полным jpeg и полный mpeg не принимая во внимание или мои коэффициенты неверны.

Если я устанавливаю цветовую матрицу ITU709 в своем коде C ++ с библиотекой ffmpeg и позволяю преобразованию выполнять ее swscale, я получаю хорошее соответствие цветов в изображении, если я выбираю путь 601 (по умолчанию) в шейдере.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector