tracker35 wrote:
Avisynth+ r2544 / SVPflow 4.2.0.142
В режиме MT выдаёт такую ошибку, вне зависимости от того какой SetFilterMTMode("DEFAULT_MT_MODE", 2) 1, 2 или 3.
Я в субботу списался с MAG79.
Благодарю за ответ. Надеюсь, на форуме можно обращаться на "ты".
Итак, в квоте видна типичная проблема, возникающая при размещении команды Prefetch(Threads) внизу скрипта.
Я выяснил это совершенно случайно. Если эту команду убрать, то скорость остаётся стандартной. Для моего компьютера это примерно 12 к/с при обработке игрового видео 720р. К сожалению, GameDropFix-v5-01 (и любой их них), прекращают свою работу при размещении команды Prefetch и выдают на картинке такой заголовок. И это не проблема скрипта от Mag79.
Примечательно, что с этой командой прекращают работу или глючат ВСЕ примеры из справочника для AviSynth, основанные на ScriptClip и других функций этой группы. Вначале я подумал, что проблема касается только ран-тайм функций сравнения и анализа кадров внутри скриптов. Однако сделал простейший пример типа
#<любой источник>
Threads=2 #1|3|4
ScriptClip(Last, """
L = 20
last.Subtitle("L=" + String(L), align=5)
""", show=false)
Prefetch(threads)
и получил следующие изображения.
Prefetch закомментирован. L=20 по центру, как и полагается для параметра align=5.
Prefetch активен. Надпись L=20 слева вверху.
Проблема в том, что даже для такой простейшей функции, как субтитры, слетает принятая в функции выключка размещения (юстировка вправо-влево-верх-вниз). Наличие или отсутствие описателей SetFilterMTMode никак не влияет на результат. Я так понял, что SetFilterMTMode - это декларация, ничего более. А вот уже Prefetch - это собственно функция распараллеливания. Потому и ставится перед самым выходом и запрашивается самой первой.
В общем, всё очень плохо. С Префетч на 2 потока стандартные функции и обработка клипов идёт очень шустро (на 60-80% быстрее, чем без Префетч), практически 30 к/с и выше. Это отлично чувствуется, если попытаться сделать Dissolve на дистанции 100 кадров.
Сейчас у меня последняя версия AviSynth+ 0.1.0 r2772 с редистрибутивом C. Скрипт просматриваю под AVSPMod 2.6.0.6 64 бит, в нём же имеется модуль проверки скорости выполнения скрипта.
Система вин7 64 бита. DLL от SVP брал для 64 бит, естественно.
PS. Если что - я тоже почитатель физики Ньютона, дифференциального исчисления, матриц и теории гравитации. Но не такой скиловый.
PPS. Что-то мне подсказывает, что нужно срочно учиться писать бинарники-аналоги для ран-тайм функций AviSynth. Потому что как новичок я не знаю, какими стандартными функциями получить средние или экстремумы светлот из кадра, выданного, например, в Overlay. Или вообще как получить YUV/RGB отдельного пиксела кадра...