konstanitinqq
получились довольно разные показатели производительности видеокарты, но как их правильно интерпретировать?
Описание результатов тестов
You are not logged in. Please login or register.
SmoothVideo Project → Posts by MAG79
konstanitinqq
получились довольно разные показатели производительности видеокарты, но как их правильно интерпретировать?
Описание результатов тестов
konstanitinqq
60 fps - [SVP] good: 0.81x (48.8 fps)
Увы, в реальном времени 720p с оптимальными настройками good не потянет.
галочка аппаратного ускорения неактивна
Это по причине отсутствия поддержки OpenCL в установленных драйверах. Нужны драйвера с поддержкой OpenCL.
konstanitinqq
Еще если у Вас дефрагментация включится во время просмотра фильма или торрент работает, то тормоза обеспечены, SVP-индекс обязан просто упасть ниже единицы
konstanitinqq
1. Вам критично использовать дрова 305 и 306? Просто для двух-трехлетних видеокарт nVidia быстрее работают драйвера 275 или даже 258 (сравнение)
2. Ваша система в состоянии качественно повышать плавность только для 720p (для разрешения HD подтест good=77.4). FHD уже не тянет.
%username%
Нужны два соседних оригинальных кадра, между которыми получается представленный выше результат.
Тогда можно будет посоветовать что-то конкретное, ну или как минимум, это нам пригодится для развития SVP и улучшения качества в будущем
Хотя вручную это конечно все исправляется.
Я убрал четные кадры и заменил их интерполированными. Т.е. я удалил половину фаз движений фона, пожертвовал ими, чтобы интерполировать движения персонажа.
Проблема в том, что человек может выделить глазами персонаж из кадра и решить есть движение персонажа в кадре или нет. Компьютер не может это сделать так же легко как человек. Поэтому повышение плавности для аниме в динамике пока даже не планируется добавлять в SVP.
vivan
Спасибо за 60 фпсную амв'шку de:light от аггрессора.
Поизучаю, может почерпну оттуда идею как улучшить автоматическое повышение плавности для аниме.
konstanitinqq
В подтверждение слов vivan'а вот один из сложных примеров для повышения плавности: панорамирование в аниме.
Движения фона есть в каждом кадре, а движение персонажа прорисовано только через кадр.
В предлагаемом мульте From Up On Poppy Hill встречается прорисовка персонажей через кадр и через два кадра. Это соответствует частоте кадров 12 к/сек и 8 к/сек (как правильно заметил vivan).
На статике движения восстановить возможно, на динамике (как на анимации выше) - это непростая и пока нерешаемая задача.
konstanitinqq
Что если сохранять этот результат как я уже писал, во время просмотра, чтобы проигрыватель не взаимодействовал напрямую с SVP, а читал создающийся файл (кэш) уже готовый к воспроизведению на подобии youtubeской системы ?
Повторюсь: кэш уже используется. И не один, а несколько.
+ внутренние кэши Avisynth
Предлагаемый "youtubeский" кэш принципиально ничем не лучше. Вы CrystalPlayer пробовали? Там кэширование реализовано именно так, как в YouTube при нехватке скорости канала.
konstanitinqq
1. Конфигурация Вашего железа? Прошу заполнить профиль.
2. Описать характер Ваших подергиваний.
3. Показать результат утилиты dcp_lat (без SVP и с SVP).
4. Привести допинфо, взятое во время проигрывания фильма с подергиваниями. По меню SVP в трее: Показать - Дополнительную информацию
konstanitinqq
Дело в том, что мы стремимся создать продукт, который не зависает и не тормозит. Это наше направление.
А такие опасные настройки тянут продукт в обратную сторону - к нестабильности и тормозам. Поэтому тут нужен баланс. Этот баланс надо найти.
не трудно сделать так, чтобы при запуске воспроизведения создавался кэш на диске (и\или в ОЗУ)
Он уже создается. В оперативной памяти. Как минимум в трех местах: на входе в ffdShow, на выходе из Avisynth, на очереди к отрисовке в отрисовщике.
Чем эти кэши не устраивают?
я уверен что это повысит производительность и качество работы SVP
Тут тоже есть баланс. Недостаточный размер кэша - подтормаживания при ожиданиях, Избыточный - потеря на выделении и очистке кэша. В данном случае баланс уже найден и отлажен. В этом месте производительность уже не повысишь.
%username%
а если перекодировать?
Тогда не отключать. Именно эти моменты и надо учесть. Проверить и отладить их работу.
konstanitinqq
внести эти изменения в будущую версию
В планах имеется добавить (а точней вернуть) алгоритм "Замена выпавших кадров". Скорее всего сделаем переключатель что восстанавливать: одиночные кадры или еще и пары выпавших кадров. Второе ощутимо трудозатратней. Больше вычислительная сложность и потребление памяти.
Настройка эта очень рискованная, т.к. может на FullHD заклинить любой современный разогнанный до небес процессор. Поэтому и была исключена из стабильных версий SVP. Для ее возвращения нужно сделать дополнительные оптимизации алгоритма, отладить их и самое главное добавить защиту "от дурака", чтобы алгоритм отключался на разршениях, которые процессору не по зубам.
konstanitinqq
Скачайте... From Up On Poppy Hill (2011)
С каким разрешением? Какой релиз? Где ссылка?
Этот подойдет?
Буфер кадров в оперативной памяти имеется, см. скрытую настройку ExBuffAheadAdd.
Есть вариант использовать CrystalPlayer и включить там буферизацию. Он умеет буферизировать до 300 кадров. Это 5 секунд на частоте 60 к/сек. Но смотреть все-равно не приятно: частые остановки для буферизации.
Винт использовать для буфера нет смысла - очень медленный. Тут уж лучше сохранить весь пересчитанный фильм, а после смотреть его с диска.
Насчет движений в аниме (именно этот файл я еще не смотрел), вероятно они прорисованы не в каждом кадре, а через кадр или через два.
Тогда такие кадры можно предварительно обрабатывать как дропы, восстанавливая (додумывая) движения на кадрах, где оно не было прорисовано.
Подробнее см. Замена выпавших кадров (drop'ов) и SVP
vxu
Try this method:
In SVP tray menu choose: Information - Last used AVS script.
Notepad will be opened with text like this:
svp_scheduler=true
SetMemoryMax(1024)LoadPlugin("C:\Program Files (x86)\SVP\plugins\svpflow1.dll")
LoadPlugin("C:\Program Files (x86)\SVP\plugins\svpflow2.dll")threads=5
SetMTMode(3,threads)
ffdShow_source()
assert(width==640 && height==480,"Frame size "+string(width)+"x"+string(height)+" instead of 640x480")
SetMTMode(2)super_params="{scale:{up:2},gpu:0,rc:true}"
analyse_params="{block:{w:8,h:8},main:{search:{coarse:{distance:-10},bad:{sad:2000}}}}"
smoothfps_params="{rate:{num:2,den:1},algo:13,scene:{}}"super=SVSuper(super_params)
vectors=SVAnalyse(super, analyse_params)
smooth_video=SVSmoothFps(super, vectors, smoothfps_params, mt=threads, url="www.svp-team.com")
smooth_video
distributor()
Add command SelectEvery(2,0) and double num like this:
svp_scheduler=true
SetMemoryMax(1024)LoadPlugin("C:\Program Files (x86)\SVP\plugins\svpflow1.dll")
LoadPlugin("C:\Program Files (x86)\SVP\plugins\svpflow2.dll")threads=5
SetMTMode(3,threads)
ffdShow_source()
assert(width==640 && height==480,"Frame size "+string(width)+"x"+string(height)+" instead of 640x480")
SetMTMode(2)
SelectEvery(2,0)
super_params="{scale:{up:2},gpu:0,rc:true}"
analyse_params="{block:{w:8,h:8},main:{search:{coarse:{distance:-10},bad:{sad:2000}}}}"
smoothfps_params="{rate:{num:4,den:1},algo:13,scene:{}}"super=SVSuper(super_params)
vectors=SVAnalyse(super, analyse_params)
smooth_video=SVSmoothFps(super, vectors, smoothfps_params, mt=threads, url="www.svp-team.com")
smooth_video
distributor()
Close and save, rewind in player.
This method needs you to change script every time you open video.
Noweol
yartat
Точно. Спасибо. А я уж думал, что это мои локальные проблемы.
Ждите исправленную версию SVPtube.
Еще немного поработал над задачей замены выпавших кадров.
Меня не устраивала необходимость настройки скрипта под материал (варьирование значением MaxDifInDoubleFrames = 0.2). При низких значениях алгоритм пропускал дропы, а при высоком ошибочно назначал дропами кадры с медленным движением. Причем параметр приходилось настраивать не только для клипа, а даже для отдельных его сцен. Это жутко неудобно.
Поэтому я доработал скрипт. Добавил адаптивности и убрал переменную MaxDifInDoubleFrames. Теперь скрипт сам автоматически подбирает порог в зависимости от динамичности сцены. Кроме этого провел оптимизацию скорости расчетов. Вот вторая версия DoubleDropFix_v2.avs:
DSS2("l2 2011-04-30 23-03-23-38.mp4").ConvertToYV12()
crop(600,300,640,480)
sc=MSuper(pel=1)
vf=MAnalyse(sc,isb=false)
vb=MAnalyse(sc,isb=true)
global frame_50 = MFlowInter(sc,vb,vf,time=50).SubTitle("Fix-50", size=12, align=3)
global frame_33 = MFlowInter(sc,vb,vf,time=33).SubTitle("Fix-33", size=12, align=3).trim(1,0)
global frame_66 = MFlowInter(sc,vb,vf,time=66).SubTitle("Fix-66", size=12, align=3)
global frame_src = last
global mini=sc.crop(8,height+8*3,width/2,height/2).TemporalSoften(1, 1, 0, scenechange=1, mode=2)
last.scriptclip("dif=mini.ydifferencefromprevious()
\ dif_next1=mini.trim(1,0).ydifferencefromprevious()
\ dif_next2=mini.trim(2,0).ydifferencefromprevious()
\ dif_prev1=(mini.trim(1,1)+mini).ydifferencefromprevious()
\ dif_prev2=(mini.trim(1,2)+mini).ydifferencefromprevious()
\ dif_nextMax=max(max(dif,dif_next1,dif_next2)/8,0.01)
\ dif_prevMax=max(max(dif,dif_prev1,dif_prev2)/8,0.01)
\ dif>min(dif_prevMax,dif_nextMax)
\ ? frame_src
\ : dif_next1>dif_nextMax
\ ? dif_prev1>dif_prevMax
\ ? frame_50
\ : dif_prev2>dif_prevMax
\ ? frame_66
\ : frame_src
\ : dif_next2>dif_nextMax
\ ? dif_prev1>dif_prevMax
\ ? frame_33
\ : frame_src
\ : frame_src")
Результат вышел близкий по размеру к предыдущему клипу. Превью 640x480: http://yadi.sk/d/zeHOQlQYtvA2 (43,7 МБ)
Надежность определения дропов значительно возросла и составляет по субъективным ощущениям выше 99%.
Предлагаю сравнить оба ролика на предмет восстановленной плавности движений.
Для удобства сравнения выложил таким же образом кадрированный до 640x480 исходный клип, чтобы можно было сравнить покадрово и не качать весь исходник.
Брать тут: http://yadi.sk/d/YQ_e5-Retyak (38,9 МБ)
%username%
Можно такую феньку в SVP 3.1.3?
Почему бы и нет Все будет зависеть от того, как на многоядерных процессорах FullHD в реалтайме будет вытягивать и за ограничение памяти вылезать.
антиалиасинг побочный эффект?
Сила эффекта настраивается. Но в общем случае почти всегда интерполированные кадры чуть размыты по сравнению с исходными. Разумеется не везде, а только в областях, где есть движение.
berryracer
1. Can you show screenshot of your SVP Performance graphs window while message appear?
2. And write message text?
THX-UltraII
Usually sports and TV shows are broadcasted at 25i (PAL) and 30i (NTSC). Maybe your projector can deinterlace and interpolate 25i to 60p?
THX-UltraII
why does JVC (and Sony and others) say that FI mode works best for sports/tv then?
I don't know why they do that
This IS 59 material isn t it?
Usually it is right.
I think no.
But what is the strange framerate 59.02?
tipsydead
Интересная задачка с заменой выпавших кадров.
Специально для предоставленного клипа расширил скрипт, который теперь заменяет не только одинарные выпавшие кадры, но и группы по два выпавших кадра подряд.
Получился скрипт DoubleDropFix.avs:
DSS2("l2 2011-04-30 23-03-23-38.mp4").ConvertToYV12()
crop(600,300,640,480)
sc=MSuper(pel=1)
vf=MAnalyse(sc,isb=false)
vb=MAnalyse(sc,isb=true)
vf2=MAnalyse(sc,isb=false,delta=2)
vb2=MAnalyse(sc,isb=true,delta=2)
global frame_50 = MFlowInter(sc,vb,vf,time=50).SubTitle("Fix-50", size=12, align=3)
global frame_33 = MFlowInter(sc,vb2,vf2,time=33).SubTitle("Fix-33", size=12, align=3)
global frame_66 = MFlowInter(sc,vb2,vf2,time=66).SubTitle("Fix-66", size=12, align=3)
frame_66=frame_66.trim(1,1) + frame_66
global frame_src = last
global MaxDifInDoubleFrames = 0.2
last.scriptclip("
\ ydifferencefromprevious()>MaxDifInDoubleFrames
\ ? frame_src
\ : trim(1,0).ydifferencefromprevious()>MaxDifInDoubleFrames
\ ? (trim(1,1)+last).ydifferencefromprevious()>MaxDifInDoubleFrames
\ ? frame_50
\ : (trim(1,2)+last).ydifferencefromprevious()>MaxDifInDoubleFrames
\ ? frame_66
\ : frame_src
\ : trim(2,0).ydifferencefromprevious()>MaxDifInDoubleFrames
\ ? (trim(1,1)+last).ydifferencefromprevious()>MaxDifInDoubleFrames
\ ? frame_33
\ : frame_src
\ : frame_src")
Скрипт все еще использует библиотеку MVTools2, переделать на библиотеки SVP не сложно, но нужно время на эксперименты.
Предпросмотр результата (взят фрагмент 640x480 из середины клипа): http://yadi.sk/d/ITKMF7RJsl4a (43,5 МБ)
А вот так выглядит замена парных выпавших кадров (дропов):
Восстановленные кадры в парах подписываются "Fix-33" и "Fix-66" (одиночные - "Fix-50") согласно относительному межкадровому расстоянию в процентах.
tipsydead
что-нибудь посоветовать почитать, чтобы лучше понимать во всей этой теме с видео на ПК
Конечно. Наглядно и понятно про видео излагает Видеогруппа MSU: Презентации видеогруппы
---
Начать можно с лекций по методам обработки и сжатия видео (выложены тоже в виде презентаций).
tipsydead
почему интересно madVR лучше работает в полноэкранном режиме, когда не "windowed", а "exclusive mode"?
Ну так он и предназначен для лучшей синхронизации, этот режим "exclusive mode". Коротко на пальцах: отрисовка экрана отдается монопольно одному процессу (плееру), все остальные процессы включая проводник и рабочий стол лишаются возможности выводить что-то на экран. Это дает плееру возможность точней сонхронизироваться с синхро-сигналами экрана.
когда файл проигрывается на MPC в оконном режиме Fraps показывает 30 fps, которые проседают до 12-14 fps
если проигрывать на Windows media player'е в том же оконном режиме Fraps уже показывает неизменные 60fps
Именно потому что отрисовка всех кадров идет на виртуальную поверхность рабочего стола, а уже оттуда собираясь и накладываясь от всех приложений попадает на экран. Каждое приложение рисует на рабочем столе со своей частотой, а рабочий стол старается отрисовываться на экране с частотой обновления экрана. Отсюда 60 fps.
друго видео нет. С этим как я понял манипуляции по "улучшению" бесполезны?
Почему же? Тот же DropFix использовать. Или, что лучше, обновить DropFix и переписать на библиотеках SVP.
travolter
write a setmtmode(x,x) line
Only one parameter will be accepted. You may write a setmtmode([mode]) line
SmoothVideo Project → Posts by MAG79
Powered by PunBB, supported by Informer Technologies, Inc.