Торренты   
 
 


Стереоплеер: Free 3d player by Kostasoft

Выдалось немного свободного времени. Внес некоторые изменения в работе моего стереоплеера, основанного на технологии 3D Vision от Nvidia.
Просьба, протестировать его на разном железе (В режиме анаглифа или QuadBuffers должно работать и на видеокарточках от ATI/AMD).
Скачать с официальной страницы проекта
Что изменено:
1. Сделал ручное переключение исходных режимов стереоролика (цифровыми клавишами). Поддержка форматов: Over/Under, Side-by-Side (обычные и анаморфные режимы)
2. Сделал декодирование видео только в UV12 (для ускорения декодирования на слабых машинах, в связи с уменьшением потока в 2.6 раза по сравнению с RGBA) и вывод на экран этого цветового подпространства за счет использования Pixel Shader 2.0 (опять же для ускорения распаковки кадров, т.к. вся работа ведется в GPU видеокарты).
Что ухудшилось:
1. Не включается режим стерео на встроенных видеокартах (у меня ноутбук Dell XPS 13 с двумя видеокартами. На встроенной не включается, на дискретной - работает). Неизбежное зло при переходе на новый способ вывода видео через шейдеры.
Просьба, по возможности, отписаться о работе данного сабжа в сравнении с другими плеерами (скорость работы, баги). Особенно интересует мнение владельцев компьютеров со слабым процессором (и более-менее шустрой видеокартой), у которых наблюдались тормоза при воспроизведении "тяжелого" видео.
Комментарии:

Пред.  1, 2, 3, 4, 5 ... 15, 16, 17  След.






Вот, еще сравнение по табличке цветов, которая используется в моей программе для настройки цветовых профилей
Исходное изображение:

Вариант с VAL:

вариант с LUM:

Выводы в принципе те же.
 

kostasoft
Я так понял, что с загрузкой массивов в виде текстур не получилось? Дело в том, что даже если коррекцию цвета сделать формулами, то компенсацию гхоста все-равно придется по табличкам делать, а значит, придется их грузить.
К стати, у меня на рабочем компе интегрированное видео от intel, так вот плеер запускается, а в анагиф-режиме воспроизводить видео не хочет. Плеер только под nVidia заточен? Если так, то оч.жаль, т.к. на большинстве ноутов видео интеловское, да и на медиацентре моем домашнем, который к телику подключен, видео интеловское.
P.S.
Формул для адаптивной коррекции под определенный тип анаглифа нет, точнее там так делается:
KSS = 1-(1-f(H))*V
S = ((1-KSS)*(1-S)+KSS)*S
где: f(H) - функция, задаваемая по 12 точкам для H=0, H=30, H=60, H=90, H=120, H=150 и т.д., значение в каждой точке может принимать величину от 0 до 1, для всех промежуточных значений H используется линейная интерполяция. Значения коэффициентов в этих точках в моей программе пользователь может менять с помощью регуляторов с просмотром результата в реальном времени по картинке выше.
 

Я так понял, что с загрузкой массивов в виде текстур не получилось? Дело в том, что даже если коррекцию цвета сделать формулами, то компенсацию гхоста все-равно придется по табличкам делать, а значит, придется их грузить.
Получится обязательно. Но, я бы хотел оставить загрузку массивов в текстуру в постобработке, ты сам говорил, что там уже нет никаких формул. А в шейдерах есть ограничение на кол-во одновременно используемых текстур.
Видимо, именно по этому:
К стати, у меня на рабочем компе интегрированное видео от intel, так вот плеер запускается, а в анагиф-режиме воспроизводить видео не хочет. Плеер только под nVidia заточен? Если так, то оч.жаль, т.к. на большинстве ноутов видео интеловское, да и на медиацентре моем домашнем, который к телику подключен, видео интеловское.
А если переключить в 1 режим QuadBuffers, то плеер покаже картинку? Если да, то значит проблема именно в усложненном шейдере в режимах анаглифа.
KSS = 1-(1-f(H))*V
S = ((1-KSS)*(1-S)+KSS)*S
где: f(H) - функция, задаваемая по 12 точкам для H=0, H=30, H=60, H=90, H=120, H=150 и т.д., значение в каждой точке может принимать величину от 0 до 1, для всех промежуточных значений H используется линейная интерполяция. Значения коэффициентов в этих точках в моей программе пользователь может менять с помощью регуляторов с просмотром результата в реальном времени по картинке выше.
Вот это уже дело! Грузить 12 чисел, это тебе не 131кб в текстуру!
Давай функцию f(H) и три массива по 12 чисел (для каждого подвида анаглифа). Пользователь будет в твоей программе ползунками выбирать их и экспортировать в файл (обычный бинарник 12 байт, хотя можно все три анаглифа объединить в один файл, для простоты, а пользователь, выбрав в начале тип анаглифа будет менять только один массив из трех).
Попробуй новую версию v.12.4.4.0. В ней я вообще убрал дополнительные две текстуры из шейдера. Пойдет ли в таком видео на Intel-е?
 

kostasoft
Вот, наверное так будет:
H = 0..360
I = int(H/30)
f(H) = (R+(R[I+1]-R[I])*(H/30-I))/100;
KSS = 1-(1-f(H))*V
S = ((1-KSS)*(1-S)+KSS)*S
где: R - массив с ячейками R[0]..R[12], значения типа byte в диапазоне 0..100
H в градусах, но можешь заменить на радианы 0..2*PI, тогда 30 замени на PI/6
Добавлено:
Вот переделал свою программу, теперь она делает файлик с коэффициентами, там последовательно 3 массива по 13 значений каждый. Первый массив для R-GB, второй для G-RB, третий для RG-B
 

kostasoft
Вот еще тестовые изображения. Там исходная картинка и результаты ее коррекции под каждый вид очей и через универсальный профиль. Обрати внимание на то, что насыщенность слева и справа остается неизменной, а чем ближе к центру, тем она больше снижается. По вертикали изменение насыщенности от профиля зависит, для универсального профиля она одинакова для всего диапазона H
 

Спасибо photoreal3d за тестовые картинки.
Благодаря им я настроил следующую цепочку преобразования:
Исходное изображение я воспроизвел плеером, в плеере (в шейдере) сделал:
YUV->
Корректировка по формулам: y = 1.1643 * (y - 0.0625);v -= 0.5;u -= 0.5;
Перевод в HSL по формулам: hue = atan(v,u);sat = sqrt(u*u + v*v);
//Тут должна быть адаптивная коррекция, временно закомментировал
Перевод обратно в YUV по формулам: u = cos( hue ) * sat;v = sin( hue ) * sat;
Преобразование в RGB по формулам: r=y+1.5958*v;g=y-0.39173*u-0.81290*v;b=y+2.017*u;
Вывод изображения.
Вот что получилось:
 

kostasoft
Да... Отлично получилось!
 

Включил адаптивную коррекцию.
Для теста специально получил RGB из входных YUV. Затем нашел VAL = max(R,G,B)
И, используя (для начала) универсальный алгоритм, получил:
Картинка, с использованием формулы kss = 1.0-y;

Картинка, с использованием формулы kss = 1.0-0,5*val;

Оригинал (Результат универсальный)

Разница между первым (Luminance: y из YUV с коэффициентом 2) и вторым (Value как максимум из RGB) вариантом немного заметна даже мне (если сохранить оба изображения и переключаться между ними) и хорошо заметна с третьим вариантом.
Думаю, разница с эталоном заметна из-за разного алгоритма перевода HSV->RGB.
Есть у меня идея! А что, если забить на все, оставить перевод YUV->HSL->YUV->RGB и настраивать коэффициенты прямо из плеера, под эту конкретную цепочку преобразований! Тогда пользователь один раз сможет настроить адаптивную коррекцию и все. А вот постпродакшен уже реализовать профилями (до него пока руки не дошли).
Единственное, я не понял, чего нужно добиться в настроечной таблице (адаптивной), дергая регуляторы?
 

kostasoft
Да, я вчера посмотрел на полученные результаты, но отвечать не стал, надо было все обдумать. Помнишь выше я выкладывал те же самые картинки сравнения Lum и Val - у меня разница гораздо больше. Это было из-за того, что я переводил RGB => HSV, RGB => Y, затем в формуле расчета S вместо V подставил Y, а затем перевел HSV => RGB. Фишка в том, что изменяя только насыщенность в пространстве HSV, изменяется и яркость (это видно из всех приведенных мной картинок - обработанные всегда немного светлее).
Идея подобрать коэффициенты (регуляторы) под определенную цепочку преобразований YUV->HSL->YUV->RGB правильная. Мне вчера она тоже приходила, я решил, что сделаю отдельную программу для подбора этих коэффициентов, в которой именно такая цепочка YUV->HSL->YUV->RGB будет заложена.
Подбор положения регуляторов - это единственное "субъективное" действие в моем алгоритме, возможность подстроить под себя. Раньше у меня был вообще единственный регулятор, типа "интенсивность эффекта", потом их стало 12. В общем, я пользователям вообще рекомендую регуляторы не трогать, но если все-же хочется, то порядок такой (смотрим в цветных очках): 1) выставляем все движки на максимум; 2) выбираем строку с цветами, которые "блестят/пестрят" наиболее сильно (сильнее всех других) и убавляем коэффициент до тех пор, пока данная строка не будет блестеть примерно одинаково с остальными, повторяем п.2 несколько раз
 

kostasoft
Разобрался с коррекцией цвета в пространстве HSL (где L=Y), надо делать так:
H = 0..360
I = int(H/30)
f(H) = (R+(R[I+1]-R[I])*(H/30-I))/100;
KSS = f(H)
S = ((1-KSS)*(1-S)+KSS)*S
т.е. яркость вообще не учитывать! тогда результат получается максимально близкий к моему, по крайней мере разницу можно подбором положения регуляторов компенсировать. Единственное, что не нравится - это то, что темнее немного получается, но в реале посмотрим как выйдет, если совсем темно будет, изменим гамму!
P.S. Сделал программу для создания профилей (как цветовой коррекции, так и коррекции гхоста). Можешь включать ее в состав дистрибутива плеера. Там сейчас по умолчанию все регуляторы в 50% стоят. Оптимальные с моей точки зрения значения регуляторов для каждого типа анаглифа сделаю в субботу и забью их в исходнике как значения по умолчанию.
Добавлено:
Изменение коэффициентов в VPConfig сразу отображается на тестовом изображении, причем исходное изображение в YUV, конвертируется на прямую в HSL, изменяется значение S, обратно конвертируется в YUV и затем конвертируется в RGB для вывода на экран. Т.е. абсолютно так же, как сейчас в плеере реализовано!
 

2 photoreal3d
А что в твоей формуле означает R без указания элемента массива?
 

kostasoft
Это R от I. Просто I в квадратных скобках в постах означает включение курсива (неудачно переменную выбрал)
 

Вот так лучше:
H = 0..360, S = 0..1
J = int(H/30)
KSS = (R[J]+(R[J+1]-R[J])*(H/30-J))/100;
S = ((1-KSS)*(1-S)+KSS)*S
 

2 photoreal3d
Еще вопрос, у тебя 13 точек. Разве не должна первая точка совпадать с 13-ой?
 

kostasoft
В первую и последнюю ячейки записываются одинаковые значения. Это для того, чтобы формула
(R[J]+(R[J+1]-R[J])*(H/30-J))/100 была универсальной, иначе, интервал Н=330..359 придется отдельно описывать как (R[11]+(R[0]-R[11])*(H/30-11))/100.
Еще только сейчас увидел: надо следить чтобы H была в диапазоне 0..359, если будет 360 - обращение к несуществующей ячейке массива!!!
 

Спасибо. Попробую для начала со звуком разобраться.
Теперь воспроизводится одна звуковая дорожка, но некоторые фильмы стали виснуть, просто стоит чёрный экран. Например вот этот http://torrents3d.ru/viewtopic.php?t=897 и этот http://torrents3d.ru/viewtopic.php?t=1268 фильмы.
 

2 Academic
Сейчас скачаю Галапагосы, посмотрю, что там у меня. Кстати, новая версия (уже почти готова) будет поддерживать переключение звуковых дорожек и прочие опции через контекстное меню. Потерпи, почти все готово, сейчас в анаглифе сделаю поддержку адаптивной коррекции и выложу новую версию.
Только что проверил галапагосы, все отлично воспроизводится. Думаю, у Вас в системе слишком много "мусорных" кодеков, но это только предположение.
Все, готово!
Версия 12.4.5.0
Как и обещал, с адаптивной коррекцией (плохо-ли, хорошо-ли корректирует, другой вопрос, постараюсь вылизать, как смогу), с контекстным меню, с переключением аудиотреков. Позже сделаю многоязычный интерфейс.
2 Photoreal3d
Тебе есть на чем запустить плеер, чтобы он заработал?
 

Версия 12.4.5.0
После переключения в анаглиф-вывод только зеленый экран переменной яркости, типа тужится, но не выходит. Он вообще на AMD платформу расчитан?
 

kostasoft
Плеер работает на домашнем компе (видео GT520, проц i3 3GHz, 2 GB оперативки, Win7+WinXP), на домашнем медиацентре не хочет (видео интегрированное intel G45, проц core2duo 1,86GHz, 1 GB оперативки, Win7). Работает как то специфично: при переключении режима в анаглиф или смене анаглиф режима на другой тип анаглифа, плеер перезапускается но демка не воспроизводиться - просто черный экран. Закрываю плеер и запускаю его заново - воспроизводиться демка, но не в режиме анаглифа, а как будто бы в режиме 3d vision (т.е. ракурсы как будто идут по очереди с частотой 120 Гц - сложение с 50% прозрачностью), при этом пирамидка не светиться и яркость у монитора не увеличивается как обычно при переходе в 3D режим. Если на плеер "кинуть" файлик с 3D видео, он начинает его воспроизводить, причем воспроизведение в режиме анаглифа как и выбрано в настройках. Так и должно быть?
Добавлено:
Настройку адаптивной коррекции в плеере посмотрел, работает, но подбирать коэффициенты пока не было времени. У меня вопрос: настройки регуляторов у тебя сохраняются независимо для каждого типа анаглифа? И в каких файлах? Хочу потом файлы с настройками просто копировать. Еще вопрос: можно рядом с регуляторами их положение в числах вывести? - очень удобно будет. И последний вопрос: можно ли добавить регулятор гаммы? Как я понимаю, он должен канал Y только изменять (что-то со степенью). Особенно актуально для режима колоркод, там гамму надо увеличивать. Только, один момент: гамму надо в стереопаре изменять, а не в готовом анаглифе (скорректировали цвет и изменили гамму => преобразовали в анаглиф => скомпенсировали гхосты => вывели на экран - изменение гаммы улучшает эффект компенсации гхостов).
Еще добавлено:
Уже не к тебе вопрос, просто в порядке обсуждения. Вот интересный момент обнаружил. Если взять чисто красный цвет (255,0,0) и выставить коэффициент регулятора равный нулю, то по формулам:
H = 0
S = 1
J = int(H/30) => J = 0
KSS = (R[J]+(R[J+1]-R[J])*(H/30-J))/100; => KSS = 0
S = ((1-KSS)*(1-S)+KSS)*S => S = 0
То есть, на выходе должны получить чисто серый цвет. И в плеере и в моей программе VPConfig серый не получается. Измерил квадратик, где был чисто красный, пипеткой - насыщенность 66%. Почему так?
 

2 Pinnhate
Дома 3 компьютера (включая ноутбук) и все на платформе Intel с видеокартами NVidia :-(
А в режиме QuadBuffers он выдает хоть какую-то картинку?
2 photoreal3d
Да, странно он стартует. Позже разберусь (сегодня весь день занят, может к вечеру, если не вымотаюсь)
Все настройки хранятся в файле с расширением kap (kostasoft anaglyph profile) в папке с программой, который представляет собой ini-файл по структуре.
Регулятор Y сделаю (опять же, только вечером). И приведу тебе формулы, по которым я сейчас работаю. Может накосячил вчера (к ночи уже устал немного).
Вся адаптивная коррекция происходит до смешения ракурсов, т.е. в стереопаре.
 

Страница 4 из 17

Пред.  1, 2, 3, 4, 5 ... 15, 16, 17  След.