1,776

(9 replies, posted in Using SVP)

JamieFX
Im trying to play a 60fps video on MPH-HC its fine sound and everything but it only plays for 10 seconds any help?

What is happened after 10 seconds?

1,777

(3 replies, posted in Using SVP)

No, you don't.

Видимо, видеокарта не тянет все включенные улучшалки качества видео в отрисовщике madVR. Надо настроить madVR. Или временно сменить его на EVR.

Fault Module Name:    AviSynth.dll
Fault Module Version:    2.6.0.5

Try to use avisynth 2.5.8.5 MT SVP edition. It uses more less memory and must work better with the script.

1,780

(1 replies, posted in Using SVP)

triforcemack
I see the error is:

18:23:44.288; Error: Error preparing smooth playback! Script error:
C:\Program Files (x86)\SVP\SVPMgr.wsf(17, 3) Microsoft JScript runtime error: 'confSVPmgr.main' is null or not an object

Did SVP 3.1.7 work to you before?

Evial84
ошибка скрипта AVS
Какая именно ошибка?
Давайте подробности, будем помогать wink

basilbasilbasil
Спасибо. Это особенность движений в аниме.
Вот тут Пресет SVP для аниме и буферизация кадров обсужалось с картинками:

Движения фона есть в каждом кадре, а движение персонажа прорисовано только через кадр

Может когда-нибудь SVP сможет выделять объекты и определять частоту их прорисовки. Пока к сожалению это нереально сделать автоматически.

pururum
Я драйвера для HD4000 там беру:
https://downloadcenter.intel.com/produc … Processors

Yes. I did it! cool
It was not avisynth error it was needed in "global" statements. Working version of GameDropFixFuncs.avsi:

# GameDropFixFuncs.avsi

function GameDropFixV4(clip c, bool "myGPU", bool "myDebug", int "myErrSize")
{
myGPU = default( myGPU, true )
myDebug = default( myDebug, false )
myErrSize = default( myErrSize, 12 )

last=c

super_params_mini = (myGPU==true) ? "{gpu:1}" : "{gpu:0}"

analyse_params_mini="{block:{w:8,h:8}}"
miniW = int(width/64)*32
miniW = (miniW<320) ? 320 : miniW
miniH = int(height/64)*32
miniH = (miniH<160) ? 160 : miniH
global mini=BicubicResize(miniW,miniH).TemporalSoften(1, 1, 0, scenechange=1, mode=2)
super_mini=mini.SVSuper(super_params_mini)
vectors_mini=SVAnalyse(super_mini, analyse_params_mini)
vectors_Forward=SVConvert(vectors_mini, false)
HorizontalSpeed_luma=mini.MMask(vectors_Forward, kind=3).convertToRGB32().PointResize(miniW/8, miniH/8).PointResize(miniW/4, miniH/4).ConvertToYV12().mt_lut(y=2, u=128, v=128)
VerticalSpeed_luma=mini.MMask(vectors_Forward, kind=4).convertToRGB32().PointResize(miniW/8, miniH/8).PointResize(miniW/4, miniH/4).ConvertToYV12().mt_lut(y=2, u=128, v=128)

size=16
global luma_lft=HorizontalSpeed_luma.crop(0,0,miniW/16,0).BicubicResize(size,size)
global luma_rgh=HorizontalSpeed_luma.crop(miniW/16+miniW/8,0,0,0).BicubicResize(size,size)
global luma_top=VerticalSpeed_luma.crop(0,0,0,miniH/16).BicubicResize(size,size)
global luma_btm=VerticalSpeed_luma.crop(0,miniH/16+miniH/8,0,0).BicubicResize(size,size)
global luma_drop=luma_lft.mt_lut(y=-1, u=128, v=128)

global move_idx=5
global y_idx=3
global min_move=0.1
global max_stop=0.5
global drop_clip=luma_drop.ScriptClip("
    AvgLuma_lft=128-luma_lft.AverageLuma
    AvgLuma_rgh=128-luma_rgh.AverageLuma
    AvgLuma_lft_prev=128-(luma_lft.trim(1,1)+luma_lft).AverageLuma
    AvgLuma_rgh_prev=128-(luma_rgh.trim(1,1)+luma_rgh).AverageLuma
    AvgLuma_lft_next=128-luma_lft.trim(1,0).AverageLuma
    AvgLuma_rgh_next=128-luma_rgh.trim(1,0).AverageLuma

    AvgLuma_top=128-luma_top.AverageLuma
    AvgLuma_btm=128-luma_btm.AverageLuma
    AvgLuma_top_prev=128-(luma_top.trim(1,1)+luma_top).AverageLuma
    AvgLuma_btm_prev=128-(luma_btm.trim(1,1)+luma_btm).AverageLuma
    AvgLuma_top_next=128-luma_top.trim(1,0).AverageLuma
    AvgLuma_btm_next=128-luma_btm.trim(1,0).AverageLuma

    Max_lft=max(abs(AvgLuma_lft_prev),abs(AvgLuma_lft),abs(AvgLuma_lft_next))
    Max_rgh=max(abs(AvgLuma_rgh_prev),abs(AvgLuma_rgh),abs(AvgLuma_rgh_next))
    Max_top=max(abs(AvgLuma_top_prev),abs(AvgLuma_top),abs(AvgLuma_top_next))
    Max_btm=max(abs(AvgLuma_btm_prev),abs(AvgLuma_btm),abs(AvgLuma_btm_next))
    Max_all=max(Max_lft,Max_rgh,Max_top,Max_btm)
    
    MaxLuma=max(abs(AvgLuma_lft),abs(AvgLuma_rgh),abs(AvgLuma_top),abs(AvgLuma_btm))
    MaxLuma_prev=max(abs(AvgLuma_lft_prev),abs(AvgLuma_rgh_prev),abs(AvgLuma_top_prev),abs(AvgLuma_btm_prev))
    MaxLuma_next=max(abs(AvgLuma_lft_next),abs(AvgLuma_rgh_next),abs(AvgLuma_top_next),abs(AvgLuma_btm_next))
    dif=mini.YDifferenceFromPrevious
    dif_next=mini.trim(1,0).YDifferenceFromPrevious
    dif_prev=(mini.trim(1,1)+mini).YDifferenceFromPrevious
    
    GoodContrast = (max(mini.YPlaneMinMaxDifference,mini.trim(1,0).YPlaneMinMaxDifference)>20) ? 1 : 0

    drop = (MaxLuma<0.1 && MaxLuma*2<max(MaxLuma_prev,MaxLuma_next) && dif*y_idx<max(dif_prev,dif_next)) ? 1 : 0

    drop_lft = (AvgLuma_lft_prev*AvgLuma_lft_next>0 && abs(AvgLuma_lft*move_idx)<Max_lft && abs(AvgLuma_lft)<=min_move && dif*y_idx<max(dif_prev,dif_next)) ? 2 : 0
    drop_rgh = (AvgLuma_rgh_prev*AvgLuma_rgh_next>0 && abs(AvgLuma_rgh*move_idx)<Max_rgh && abs(AvgLuma_rgh)<=min_move && dif*y_idx<max(dif_prev,dif_next)) ? 3 : 0
    drop_top = (AvgLuma_top_prev*AvgLuma_top_next>0 && abs(AvgLuma_top*move_idx)<Max_top && abs(AvgLuma_top)<=min_move && dif*y_idx<max(dif_prev,dif_next)) ? 4 : 0
    drop_btm = (AvgLuma_btm_prev*AvgLuma_btm_next>0 && abs(AvgLuma_btm*move_idx)<Max_btm && abs(AvgLuma_btm)<=min_move && dif*y_idx<max(dif_prev,dif_next)) ? 5 : 0
   
    drop = (drop==0 && MaxLuma<Max_stop && Max_lft==Max_all) ? drop_lft : drop
    drop = (drop==0 && MaxLuma<Max_stop && Max_rgh==Max_all) ? drop_rgh : drop
    drop = (drop==0 && MaxLuma<Max_stop && Max_top==Max_all) ? drop_top : drop
    drop = (drop==0 && MaxLuma<Max_stop && Max_btm==Max_all) ? drop_btm : drop
    drop_dif = (dif<0.4 && MaxLuma<min_move) ? 6 : 0
    drop = (drop==0 && drop_dif>0) ? drop_dif : drop
    drop = (drop>0 && Max_all<0.1) ? 0 : drop
    drop = (drop>0 && GoodContrast==0) ? 0 : drop

    luma=mini.AverageLuma
    luma_next=mini.trim(1,0).AverageLuma
    max_luma=max(luma,luma_next)

    drop = (drop>0 && max_luma<16.5) ? 0 : drop
    (drop>0) ? luma_drop : \
     (Max_lft==Max_all) ? luma_lft : \
      (Max_rgh==Max_all) ? luma_rgh : \
       (Max_top==Max_all) ? luma_top : luma_btm
")

global fix_r50=luma_lft.mt_lut(y=-1, u=128, v=128)
global fix_lr33=luma_lft.mt_lut(y=-2, u=128, v=128)
global fix_l50=luma_lft.mt_lut(y=-3, u=128, v=128)
global fix_r133=luma_lft.mt_lut(y=-4, u=128, v=128)
global fix_r66=luma_lft.mt_lut(y=-5, u=128, v=128)

global AvgDrop=127
global MaxMulty=10
global dblMulti=1.3
global fix_clip=luma_drop.ScriptClip("
    drop=drop_clip.AverageLuma
    AvgLuma=abs(128-drop_clip.AverageLuma)
    AvgLuma_prev=abs(128-(drop_clip.trim(1,1)+drop_clip).AverageLuma)
    AvgLuma_prev_= (AvgLuma_prev==AvgDrop) ? 0 : AvgLuma_prev
    AvgLuma_prev2=abs(128-(drop_clip.trim(1,2)+drop_clip).AverageLuma)
    AvgLuma_next=abs(128-drop_clip.trim(1,0).AverageLuma)
    AvgLuma_next_= (AvgLuma_next==AvgDrop) ? 0 : AvgLuma_next
    AvgLuma_next2=abs(128-drop_clip.trim(2,0).AverageLuma)

    RightZero = (AvgLuma_prev_*MaxMulty<AvgLuma_next_) ? (AvgLuma_prev_>max_stop || AvgLuma_next_>max_stop) ? 1 : 0 : 0
    LeftZero = (AvgLuma_next_*MaxMulty<AvgLuma_prev_) ? (AvgLuma_prev_>max_stop || AvgLuma_next_>max_stop) ? 1 : 0 : 0

    drop = (AvgLuma==AvgDrop && AvgLuma_next==AvgDrop) ? -50 : 0
    drop = (AvgLuma==AvgDrop && AvgLuma_prev==AvgDrop) ? 50 : drop

    drop = (drop==0 && AvgLuma==AvgDrop && LeftZero==0 && RightZero==0) ? \
     AvgLuma_prev_>AvgLuma_next_*dblMulti ? -50 : \
      AvgLuma_prev_*dblMulti>=AvgLuma_next_ ? AvgLuma_next2==AvgDrop ? 50 : 33 : 50 : drop

    drop = (drop==0 && AvgLuma==AvgDrop && RightZero==0 && AvgLuma_next2==AvgDrop) ? -50 : drop
    drop = (drop==0 && AvgLuma==AvgDrop && LeftZero==0 && AvgLuma_prev2==AvgDrop) ? 66 : drop

    (drop==50) ? fix_r50 : \
     (drop==33) ? fix_lr33 : \
      (drop==-50) ? fix_l50 : \
       (drop==133) ? fix_r133 : \
        (drop==66) ? fix_r66 : drop_clip
")

global r50=1
global lr33=2
global l50=3
global r133=4
global r66=5

super_params = (myGPU==true) ? "{gpu:1}" : "{gpu:0}"

analyse_params="{main:{search:{coarse:{distance:4,bad:{sad:2000}},type:2,distance:4},penalty:{lambda:1,pglobal:10000}},refine:[{thsad:65000}]}"
smoothfps_params="{rate:{num:12,den:1},algo:13,scene:{blend:true}}"

super=SVSuper(super_params)
vectors=SVAnalyse(super, analyse_params)
fix_all = SVSmoothFps(super, vectors, smoothfps_params, mt=threads, url="www.svp-team.com")

dummy = myDebug ? Eval("""
# These are for visual debugging (the "Subtitle" clauses)
global fix50 = fix_all.SelectEvery(12,6).Subtitle("fix50", align=3, size=myErrSize)
global fix33 = fix_all.SelectEvery(12,4).Subtitle("fix33", align=3, size=myErrSize)
global fix66 = fix_all.SelectEvery(12,8).Subtitle("-fix33", align=3, size=myErrSize)
global fix66p = fix_all.SelectEvery(12,8).Subtitle("fix66", align=3, size=myErrSize)
global fix75 = fix_all.SelectEvery(12,9).Subtitle("-fix25", align=3, size=myErrSize)
global fix50n = fix_all.SelectEvery(12,6).Subtitle("-fix50", align=3, size=myErrSize)
global fix133 = fix_all.SelectEvery(12,4).Subtitle("fix133", align=3, size=myErrSize)
global fix125 = fix_all.SelectEvery(12,3).Subtitle("fix125", align=3, size=myErrSize)
""") : Eval("""
global fix50 = fix_all.SelectEvery(12,6)
global fix33 = fix_all.SelectEvery(12,4)
global fix66 = fix_all.SelectEvery(12,8)
global fix66p = fix_all.SelectEvery(12,8)
global fix75 = fix_all.SelectEvery(12,9)
global fix50n = fix_all.SelectEvery(12,6)
global fix133 = fix_all.SelectEvery(12,4)
global fix125 = fix_all.SelectEvery(12,3)
""")

#SetMTMode(5)
ScriptClip("
    AvgFix=fix_clip.AverageLuma
    AvgFix_next=fix_clip.trim(1,0).AverageLuma
    AvgFix_next2=fix_clip.trim(2,0).AverageLuma
    AvgFix_next3=fix_clip.trim(3,0).AverageLuma
    AvgFix_prev=(fix_clip.trim(1,1)+fix_clip).AverageLuma

    (AvgFix==r50) \
      ? (AvgFix_next2==lr33 || AvgFix_next2==l50) ? fix33 : fix50 : \
    (AvgFix==lr33) ? fix33 : \
    (AvgFix_next==lr33) \
     ? (AvgFix_prev==r66) ? fix75.trim(1,1)+fix75 : fix66.trim(1,1)+fix66 : \
    (AvgFix_next==l50) \
      ? (AvgFix_prev==lr33 || AvgFix_prev==r50) ? fix66.trim(1,1)+fix66 \
      : (AvgFix_prev==r66) ? fix75.trim(1,1)+fix75 : fix50n.trim(1,1)+fix50n : \
    (AvgFix==r66) \
      ? (AvgFix_next2==lr33 || AvgFix_next2==l50) ? fix50 : fix66p : \
    (AvgFix_next==r66) \
      ? (AvgFix_next3==lr33 || AvgFix_next3==l50) ? fix125.trim(1,0) : fix133.trim(1,0) : \
    last
")

#trim(0,framecount-threads)
}
# end of GameDropFixFuncs.avsi

It is single-threaded implementation. To make it multy-threaded you need to uncomment two lines: SetMTMode and trim.

You can use it from your script simply by write a line:

GameDropFixV4()

(gpu-acceleration in on, debug strings are off by default)
or full call of function:

GameDropFixV4(myGPU=true,myDebug=true,myErrSize=150)

TCmullet
I've enjoyed GameDropFixV4 several times. Thank you whoever developed it
Nice to hear! smile

If it is still actual. Today I look and modified your avsi-file to make it work.
You need to insert line with one character "c" in the top of function:

function GameDropFixV4(clip c, bool "myGPU", bool "myDebug", int "myErrSize")
{
c
#myGPU=true
#myDebug=true
#myErrSize=150
...

But for some reason the code of GameDropFixV4 work improperly if it situated inside function. In the middle of calculations local variables stop to show real information and contain fake black frames. And I can't fix it because it is mistake or lack of buffer in the avisynth.

So the only way is to use huge script in one file without "function" statement.

---
MT=MultiThreading
Used for speedup purposes for multi-core CPUs.
Official avisynth description of MT

---

And I was wrong about c=last. Sorry roll
"c" in avisynth is equivavlent to "last=c" as suggested by Chainik

pururum
Установить драйвера для HD4000 c оф.сайта Intel. Тогда установится OpenCL-драйвер для HD4000 и SVP увидит обе видеокарты. Вы получите возможность выбрать. Пока для SVP доступна одна видеокарта - нет смысла выбирать: доступны варианты либо вкл, либо выкл. wink

Посмотреть список доступных видеокарт для SVP можно в логе: Меню SVP в трее - Показать - Последний журнал запуска

Vovanchik быстрее среагировал wink

CommanderBubbke
reinstalled ffdshow, ... and then svp 3.1.7 installing avisynth 2.5.8 MT.
and behold, it works again

Congratulations! smile

is it possible for svp to know that either avisynth is missing or that ffdshow
This information is present in the SVP log file. You can use it for your investigations:

12:33:11.157; Start: SVPMgr 3.1.7 (72) starts...
12:33:11.165; AppDataPath: C:\ProgramData (ANSI)
12:33:11.169; Start: read settings file settings.ini
12:33:11.169; Start: load language file - English. Duration: 152 ms
12:33:11.321; Start: check Avisynth installed. Duration: 1836 ms
12:33:13.157; Start: clear Logs folder. Duration: 41 ms
12:33:13.198; Start: CPU and threads count detection
CPU: Intel Core i3-3217U @ 1.80GHz [4 threads] (433)
12:33:13.223; Start: SVPMgr folders prepare. Duration: 34 ms
12:33:13.257; Start: read settings file SVPMgr.ini. Duration: 16 ms
12:33:13.273; Start: GPUs settings detection
GPU_11: Intel(R) HD Graphics 4000 (216)
12:33:13.337; Start: monitors settings detection
Display#00010001: 1366 x 768 @ 60
12:33:13.341; Start: disable LNG-file write when UAC enabled. Duration: 16 ms
12:33:13.357; Start: change SVP-manager priority. Duration: 56 ms
12:33:13.413; Start: register hotkeys. Duration: 28 ms
12:33:13.441; Start: get versions of modules used
ffdshow.ax: 1.3.4533
avisynth.dll: Avisynth MT, 2.5.8.6 (SVP edition) (CRC32:5ED58E27)
svpflow1.dll: 2.0.4
svpflow2.dll: 2.0.2. Duration: 8 ms
12:33:13.449; Start: refresh autostart state in registry. Duration: 12 ms
12:33:13.461; Start: some more work with registry. Duration: 27 ms
12:33:13.488; Start: create menu. Duration: 40 ms
12:33:13.528; Start: update settings file settings.ini. Duration: 264 ms
12:33:13.792; Start: prepare "About the program" window. Duration: 33 ms
12:33:13.825; Start: enable ffdShow waiting mode. Duration: 15 ms
12:33:13.840; Start: prepare to work is complete
12:33:13.856; RefreshSVP. Duration: 24 ms
12:33:13.880; ===== Waiting for ffdshow video

15:03:23.719; ===== Detected playback with ffdShow. AppName: mpc-hc.exe, PID: 8060, supports 4GB RAM
15:03:23.804; used avisynth.dll: Avisynth MT, 2.5.8.6 (SVP edition) (CRC32:5ED58E27) from c:\Program Files (x86)\SVP\MPC-HC\

What version of MPC-HC do you use? It must be x86 version

CommanderBubbke
Did you try to disable GPU-acceleration in SVP or to disable CUVID in LAV decoder?
Windows 10 - video player hangs and/or crashes

1,790

(2 replies, posted in Using SVP)

trandoanhung1991
1. What tool are you using to measure framerate?
2. What you see at SVP Performance graphs window (I talk about CPU usage and SVP-Index values)?

Banny61rus
MSVCR120.dll
MSVCP120.dll

Скачать и установить VCRedist2013

1,792

(8 replies, posted in Using SVP)

TheWorldsEnd

Screen size and refresh rate: 1280x720 pixels, 59 Hz

For some reason SVP-manager can't detect real refresh rate of your screen. Try to point it manualy by SVP tray menu - Screen selection - Force dialog.
You can get real refresh rate screen value from madVR info (Ctrl-L in player). Usually it something like 59.994 or 60.002
When you point it you will get more speedy smooth factor 5:2. It needs less CPU performance than 22:9 as in your case.

How it should be (additional info from my notebook):

Detected screen parameters
Screen size and refresh rate: 1366x768 pixels, 59.899 Hz

1,793

(8 replies, posted in Using SVP)

TheWorldsEnd
can I manually set SVP's output resolution for a profile?
Yes.
Try to use Decrease frame size to 720px height in Active profile settings window.
It must give you the same performance as with you TV monitor.

For information 720/1080 = 67%
wink

Nintendo Maniac 64
svp31 file is for compare purposes only.

I'm not using GPU-acceleration
Then Ok. Point #2 is not actual.

Sorry. I don't have Core2Duo for full repeat your case.
And sorry. I see now you point about no GPU-acceleration in the first post.

Nintendo Maniac 64
I made SVP31-script by your picture. See file attached.

Difference is present in 7 places:
1. SVP4 uses 3 threads instead of 7. It is not critical but can lead to jerky playback.
2. SVP4 don't use GPU-acceleration (gpu:0). It can give more artifacts at frame borders and overall.
3. SVP4 uses 28px vector grid instead of 16px. It must give less artifatcs but less smothness.
4. SVP4 uses Average wide search (bad.sad:1000 by default) intead of Strongest wide search (bad:{sad:2000}}). It can give less smoothness of small objects.
5. SVP4 uses Sharp shader for anime (algo:2) instead of Standard shader (algo:13). It gives more visible artfacts around moving objects.
6. SVP4 uses Repeat frame on scene changes (blend:false by default) instead of Blend ajacent frames (blend:true). It can give more jerky playback at fast scenes and at scene changes.
7. SVP4 uses adaptive frame interpolation mode (mode:3 by default) indtead of "1m" mode (mode:1). It gives more smoothness but more artifacts.

So, I see 3 causes wich can lead to more visible artifacts: #2, 5 and 7.

---
BTW, My lower-end CPU (mobile i3-3217U) gives me more smooth playback and less artifacts with SVP4 and with profile settings by default than if I use SVP 3.1 with your settings.

В приложенном файле присутствует ошибка роста памяти:

20:35:16.555; Error: Обнаружен рост памяти, используемой плеером: 2253 МБ
Чтобы не допустить закрытие плеера из-за нехватки памяти перезапущен скрипт повышения плавности.

Была зарегистрирована при проигрывании файла "21 Jump Street.2012.720p.BluRay.x264-LEONARDO.mkv" с разрешением 1280x534 и частотой 23.976 к/сек.
Плеер PotPlayerMini.exe, поддерживает 4ГБ памяти. Использовался avisynth.dll MT, 2.5.8.6 (SVP edition), значит оптимизированный по использованию памяти.
Используемое железо: i5-3570K @ 3.40GHz [4 threads] + Intel(R) HD Graphics 4000

2253 МБ - это аномально большое значение использования памяти. Если ошибка повторится, то нужно будет искать виновника избыточного потребления памяти. В практике SVP встречалось использование неоправданно большого количества памяти при отображении динамических субтитров (сообщение из англо-язычного форума).
Обсуждение похожих проблем:
Проблема оперативная память
Тормозит видео при субтитрах

Если это единичный случай и проблема не напрягает, то можно проигнорировать. Если же проблема повторится и будет назойливой, то хорошо бы найти причину и устранить.

1,797

(8 replies, posted in Using SVP)

TheWorldsEnd
If you put here additional info in both cases (TV and Laptop screen) then we will can compare it and find the difference in SVP compute complexity.
Open video in Player, make it smooth win SVP, after that: SVP tray menu - Information - Additional information.

1,798

(5 replies, posted in Using SVP)

VB_SVP
Can you give a short example of your 24-in-30 fps video?

BruceKnowsHow
You can look also to fields lighting parameters, Flare length
And it equivalent to "smooth.light.length" value in the 'override.js' file wink

My assumptions:
1. Video memory overheated. Try to downclock it or to enchance video card cooling.
2. Video driver issue. Check by disable GPU acceleration in SVP. Try several last WHQL drivers.
3. Possible madVR issue. Read madVR forum. Play around madVR settings.
4. And of course it can be SVP library issue. Play around SVP profile settings and post here what settings leads to that glitches.