View Full Version : Count/Display/Save Frames Containing Red
hello_hello
31st January 2021, 21:55
The previous version should have been doing the same thing. This one just makes All=true behave correctly.
Danette
31st January 2021, 23:19
This is what I get when running the code in post #46:
72 - Combing 26 - 22.18
73 - Combing 27 - 112.00
74 - Combing 28 - 30.47
76 - Combing 29 - 112.00
77 - Combing 30 - 26.82
79 - Combing 31 - 28.58
80 - Combing 32 - 112.0081 - Frame Count
StainlessS
1st February 2021, 00:10
... do you know if this is expected behaviour?
If I make the "All" argument global like this:
global All = default(All, false)
it doesn't become global unless I use the argument in the function ie:
FindCombingRed(All=true)
If I don't, the "All" variable isn't seen by FrameEvaluate.
FindCombingRed()
Not sure why you were having problems there, this seems to work just fine.
Colorbars.ConvertToYV12.KillAudio
Return Test()
#Return Test(undefined)
#Return Test(All=undefined)
#Return Test(All=false)
#Return Test(false)
#Return Test(True)
#Return Test(All=True)
Function Test(clip c, bool "All") {
c
Global All = Default(All,false)
ScriptClip("Subtitle(String(ALL))") # COMMENT THIS OUT, NOTHING AT ALL HAPPENS
Subtitle(String(ALL),Align=2) # Should print ALL on Bottom of frame. NOTHING HAPPENS. # EDIT ADDED LINE
}
EDIT: Added subtitle at align=2, nothing happens there, not printed.
Where it prints ALL on bottom of frame, and input to function is undefined, then prints undefined ie null string "".
Why it Happens:-
Local variable hides a Global variable of same name, so although you have defined ALL as Global, because the local ALL variable exists,
but is undefined, so prints nothing on bottom of frame.
However inside scriptclip the global All is NOT hidden by local All and so prints on top of frame OK.
So is NOT a BUG, is as expected, but a bit tricky to figure out why.
hello_hello
1st February 2021, 00:31
Stainless, I saw your edited post after submitting this one, but anyhow....
Edit: Still trying to wrap my head around it, but in your example, where is a local All being declared as a variable? I can only see the global one. Surely converting it to a string shouldn't effect it's actual value, or global status? string(ALL)
StainlessS, that certainly produces the expected result, but this.... not so much.
Colorbars.ConvertToYV12.KillAudio
Return Test()
Function Test(clip c, bool "All") {
Global All = Default(All,false)
Return All ? c.Subtitle("All") : c.Subtitle("Not All")
}
Neither does this:
Colorbars.ConvertToYV12.KillAudio
Return Test()
Function Test(clip c, bool "All") {
Global All = Default(All,false)
Global All = All
Return All ? c.Subtitle("All") : c.Subtitle("Not All")
}
This does work:
Colorbars.ConvertToYV12.KillAudio
Return Test()
Function Test(clip c, bool "All") {
All = Default(All,false)
Global All = All
Return All ? c.Subtitle("All") : c.Subtitle("Not All")
}
Odd....
PS Version() says Avisynth+ 3.5 r3106
StainlessS
1st February 2021, 00:37
I figured out the reason, as in edit, hope it makes sense.
[I made a number of edits.]
EDIT:
When getting value of a variable, it searches the list of Local variables first, only if it does not find it there
does it then search the Global variables list.
Inside your function the optional arg "All" does exist, its just not defined unless provided by the caller with a value.
hello_hello
1st February 2021, 00:59
defined unless provided by the caller with a value.
So are you saying
All = default(All, false)
All doesn't have any value until something wants to know what "All" means later in the script? That seems odd to me. Because this works, not being an argument.
Colorbars.ConvertToYV12.KillAudio
Return Test()
Function Test(clip c, bool "All") {
Global MyCat = false
Return MyCat ? c.Subtitle("All") : c.Subtitle("Not All")
}
If that's the way it works then it's the way it works, and now I know I know, but it's unexpected, at least to me.
hello_hello
1st February 2021, 01:11
Colorbars.ConvertToYV12.KillAudio
Return Test()
Function Test(clip c, bool "All") {
Global All = Default(All,false)
Global MyCat = true
Return MyCat ? c.Subtitle(string(All)) : c.Subtitle("Not All")
}
"All" is obviously considered undefined at the return line above because there's no error.
Yet here at the return line it's false. That seems inconsistent to me.
Colorbars.ConvertToYV12.KillAudio
Return Test()
Function Test(clip c) {
Global All = false
Global MyCat = true
Return MyCat ? c.Subtitle(string(All)) : c.Subtitle("Not All")
}
Okay, maybe now I get it.
Because "All" is a function argument it's instantly a local variable inside the function, even though it's undefined, so as a global variable it's ignored. I dunno though... should an argument be a local variable before it's defined? Maybe it has to be, I think my brain is slowly coming to terms with how it works. :)
hello_hello
1st February 2021, 01:31
This is what I get when running the code in post #46:
I don't understand. I was using the function from post #46 to show you the examples. Are you sure you don't have two versions of the same function auto-loading? I've driven myself a little mad doing that before.
My favourite trick is to have the function open in a text editor (one that doesn't lock files), change the file name in Explorer, click "save" in the text editor, and then there's two versions. I did that yesterday or the day before while playing with an earlier version of this function and lost about 30 minutes banging my head on the desk before the penny dropped.
I moved my copy out of the auto-loading plugins folder, made sure it resulted in a "no function named" error message, put it back and ran the script again.
73 - Combing 27 - 112.00
74 - Combing 28 - 30.47
76 - Combing 29 - 112.00
77 - Combing 30 - 26.82
79 - Combing 31 - 28.58
80 - Combing 32 - 112.00
81 - Frame Count
StainlessS
1st February 2021, 01:34
How bout this, any good
Colorbars.ConvertToYV12.KillAudio.Trim(0,-1) # 1 frame
Return Test()
#Return Test("Some Test String")
Function Test(clip c, String "All") {
c
Out("1:- Test local All arg",All) # Local All, may be undefined
Global All = "G_" + Default(All,"Undefined String") # This is 'Invisible' due to presence of function arg All.
Out("2:- Test Global All",All) # This will output Local All, local All hides Global All
SSS="""
Out("3:- Scriptclip Subtitle Global All",All) # Local arg All is not available in ScriptClip and so cannot hide the global All
Subtitle(String(ALL))
"""
ScriptClip(SSS)
Subtitle(String(ALL),Align=2) # Should print ALL on Bottom of frame.
Out("4:- Test local Subtitle All",All) # Local All, may be undefined
Return Last
}
Function Out(String s, val "v") {
RT_debugF("%s = '%s'",s,String(v),name="Out: ") # if v is undefined, then String(v) will produce "".
}
Return Test()
00001012 0.28597242 [1224] Out: 1:- Test local All arg = ''
00001013 0.28608471 [1224] Out: 2:- Test Global All = ''
00001014 0.28634524 [1224] Out: 4:- Test local Subtitle All = ''
00001015 0.28672349 [1224] Out: 3:- Scriptclip Subtitle Global All = 'G_Undefined String'
Return Test("Some Test String")
00001115 0.28165036 [3932] Out: 1:- Test local All arg = 'Some Test String'
00001116 0.28175980 [3932] Out: 2:- Test Global All = 'Some Test String'
00001117 0.28203043 [3932] Out: 4:- Test local Subtitle All = 'Some Test String'
00001118 0.28244600 [3932] Out: 3:- Scriptclip Subtitle Global All = 'G_Some Test String'
EDIT:
Colorbars.Subtitle(String(All))
Above, As a 1 line script would produce an error as All variable does NOT exist.
All=undefined at main script level, creates a named but undefined variable. [it has neither a variable type (int/bool etc) nor value, but it does exist]
All=undefined
Colorbars.Subtitle(String(All)) # String(undefined) : produces ''
Above, Would not produce an error as All variable exists, but is not defined, it has no value or type.
EDIT: Below copied here from previous posts.
Why it Happens:-
Local variable hides a Global variable of same name, so although you have defined ALL as Global, because the local ALL variable exists,
but is undefined, so prints nothing on bottom of frame.
However inside scriptclip the global All is NOT hidden by local All and so prints on top of frame OK.
So is NOT a BUG, is as expected, but a bit tricky to figure out why.
When getting value of a variable, it searches the list of Local variables first, only if it does not find it there
does it then search the Global variables list.
Inside your function the optional arg "All" does exist, its just not defined unless provided by the caller with a value.
A variable that dont exist has no entry in the Avisynth Local or Global variable List (or Table).
An Undefined variable does have an entry in the Local or Global variable Lists (or Tables), but has no value,
nor type (strictly speaking its type is undefined).
EDIT: Creating an additional Global as you have done will of course work, I tend to like naming globals with a prepended "G_" eg "G_All",
or sometime prepend the function name as in "G_Test_All" or "_G_Test_All", or "__G_Test_All".
Danette
1st February 2021, 05:47
I moved my copy out of the auto-loading plugins folder, made sure it resulted in a "no function named" error message, put it back and ran the script again.
This ^
Seems to work fine, now.
I'll wait until you and StainlessS exercise everything.
Danette
2nd February 2021, 00:06
Yet another request:
Can the text lines showing up as “No Combing” be removed? They don’t indicate moire/combing, but add to the number of frames.
When I try to do it, it throws off syntax errors. I guess there is some conditional intertwining and some of the symbols, e.g.; “: \” are befuddling me.
StainlessS
2nd February 2021, 01:49
I have not really looked at it but suspect you only need call it with All=false.
Danette
4th February 2021, 05:46
In addition to asking if the script adjustment that would eliminate the “No combing” lines can be done, I am reporting some odd behavior with VDub2 and running the “FindCombingRed” function, although I suspect that it is a flaw in VDub2.
When I run a single avs file through VDub2’s “Run video analysis pass”, the results are as expected. However, when I try to load these avs files into VDub2’s “Queue batch operation”, specifying “Run video analysis pass”, the resulting text files all have a doubled “Frame count” line at the end, instead of just the one “Frame count” line that should be there. Additionally, some files result in empty text files with batch mode, but are fully populated when run alone, outside the batch process.
Is this a flaw in VDub2, or is it somehow related to the script? Remember: the avs files run perfectly when fed through VDub2 one at a time. If you think it’s VDub2, I’ll post over there.
poisondeathray
4th February 2021, 05:58
In addition to asking if the script adjustment that would eliminate the “No combing” lines can be done, I am reporting some odd behavior with VDub2 and running the “FindCombingRed” function, although I suspect that it is a flaw in VDub2.
When I run a single avs file through VDub2’s “Run video analysis pass”, the results are as expected. However, when I try to load these avs files into VDub2’s “Queue batch operation”, specifying “Run video analysis pass”, the resulting text files all have a doubled “Frame count” line at the end, instead of just the one “Frame count” line that should be there. Additionally, some files result in empty text files with batch mode, but are fully populated when run alone, outside the batch process.
Is this a flaw in VDub2, or is it somehow related to the script? Remember: the avs files run perfectly when fed through VDub2 one at a time. If you think it’s VDub2, I’ll post over there.
SS mentioned it opened a few times in vdub2, probably a few more when you queue it
Why not use batch avsr64 for the "analysis" pass. It will be faster than vdub for each run, also you don't have to queue them one by one - that ends up being much faster and less tedious
for %a in ("*.avs") do avsr64 "%a"
StainlessS
4th February 2021, 22:11
Groucho is the man:- https://forum.doom9.org/showthread.php?t=173259
[But zeppo was better]
EDIT: Down link at top of page.
EDIT: This was in answer to Danette asking where avsr64 was. The post seems to have disappeared.
Danette
4th February 2021, 23:38
SS mentioned it opened a few times in vdub2, probably a few more when you queue it
Why not use batch avsr64 for the "analysis" pass. It will be faster than vdub for each run, also you don't have to queue them one by one - that ends up being much faster and less tedious
for %a in ("*.avs") do avsr64 "%a"
Wow - ZOOM - it is quite a bit faster than VDub! Thanks for pointing me to that.
Incidentally, the bug I mentioned does seem to be specific to VDub2. I ran the batch function in my old VDub, v1.10.4, and it performed flawlessly.
hello_hello
6th February 2021, 23:43
Yet another request:
Can the text lines showing up as “No Combing” be removed? They don’t indicate moire/combing, but add to the number of frames.
When I try to do it, it throws off syntax errors. I guess there is some conditional intertwining and some of the symbols, e.g.; “: \” are befuddling me.
From the avisynth Wiki:
http://avisynth.nl/index.php/Operators
b = (a==true) ? 1 : 2
means
if (a==true) then b=1 else b=2
Although you can abbreviate it further, assuming "a" is either true or false.
b = a ? 1 : 2
For
b = (a==false) ? 1 : 2
it'd be
b = !a ? 1 : 2
" \ " is simply a line break. It can only occur at the end of a line, or before any text at the beginning of a line.
So you can do this sort of thing to make long lines readable.
b = a ? 1 : \
2
b =
\ a ? 1 : 2
Anyway...
FindRed()
# ===============================================================================
function FindRed(clip Vid, bool "Append", string "FileName", bool "All", bool "Write") {
Append = default(Append, false)
FileName = default(FileName, "")
All = default(All, false)
Write = default(Write, true)
N = ScriptFile()
LN = LCase(N)
NLen = StrLen(N)
ELen = FindStr(LN, ".avs") - 1
File_Name = LeftStr(N, NLen-(NLen-ELen))
FName = (FileName == "") ? File_Name : FileName
File = FName + "_Red.txt"
Vid = Vid.GreyScale()
CombTest = BlankClip(Vid, Color=color_red)
Vid = Vid.TFM(Clip2=CombTest).TDecimate()
global Everything = All
Out = FrameEvaluate(Vid, """
IsRed = (AverageChromaV() > 128)
IsEnd = (FrameCount() == (current_frame + 1))
WriteThis = \
(!IsRed && !Everything ? "" : string(current_frame)) + \
(!IsRed ? "" : string(AverageChromaV()-128, " - %.2f")) + \
(!IsEnd ? "" : (!IsRed && !Everything ? "" : chr(10)) + string(FrameCount(), "%.0f - Frame Count"))
""")
Out = !Write ? Vid : \
!All ? WriteFileIf(Out, File, "IsRed || IsEnd", "WriteThis", Append=Append) : \
WriteFile(Out, File, "WriteThis", Append=Append)
return Out }
# ===============================================================================
73 - 30.60
75 - 24.92
76 - 112.00
77 - 26.79
79 - 28.62
80 - 112.00
81 - 34.56
92 - 14.91
93 - 16.27
162 - 42.75
163 - 112.00
164 - 35.61
208 - Frame Count
If you want nothing aside from frame numbers:
WriteThis = \
(!IsRed && !Everything ? "" : string(current_frame)) + \
(!IsEnd ? "" : (!IsRed && !Everything ? "" : chr(10)) + string(FrameCount(), "%.0f"))
Although you can't use All=true because it'll write every frame number without indicating if it contains red.
73
75
76
77
79
80
81
92
93
162
163
164
208
Danette
29th October 2021, 15:46
File_Name = LeftStr(N, NLen-(NLen-ELen))
Something odd has happened. I had been using this function, successfully for many months. Then, haven't needed it for about 4 months. Now, I'm trying to use it again and I get the error message "LeftStr: Negative character count not allowed."
I've double-checked the code and it is as written, above. Nor can I recall any changes that might be interfering with it.
Any idea as to what is causing this?
StainlessS
29th October 2021, 18:56
Try insert this before error line,
RT_debugF("N=%s\nNLEN=%d\nELen=%d",N,NLen,ELen,name="Danette: ") # view in DebugView
Does your script end in .AVS, ie not .avsi.
Danette
29th October 2021, 21:07
Well, I struggled with this all morning. Then, after I inserted your debug line, it worked normally again. Go figure. Seems to be working now.
For completeness, the log for the DebugView is below. Note that this is after it started functioning again.
00000542 436.54656982 [4020] SSETools 0.1
00000543 436.76296997 [4020] Unrecognized accel key 'n ', accel string ignored.
00000544 436.76312256 [4020] Unrecognized accel key 'o ', accel string ignored.
00000545 436.76333618 [4020] Unrecognized accel key 'n ', accel string ignored.
00000546 436.76351929 [4020] Unrecognized accel key 'w ', accel string ignored.
00000547 436.76367188 [4020] Unrecognized accel key 'w ', accel string ignored.
00000548 436.76388550 [4020] Unrecognized accel key 's ', accel string ignored.
00000549 436.76409912 [4020] Unrecognized accel key 's ', accel string ignored.
00000550 436.76428223 [4020] Unrecognized accel key 'f5 ', accel string ignored.
00000551 436.76470947 [4020] Unrecognized accel key 'o ', accel string ignored.
00000552 436.76486206 [4020] Unrecognized accel key 's ', accel string ignored.
00000553 436.76504517 [4020] Unrecognized accel key 'b ', accel string ignored.
00000554 436.76519775 [4020] Unrecognized accel key 'tab ', accel string ignored.
00000555 436.76541138 [4020] Unrecognized accel key 'tab ', accel string ignored.
00000556 436.76559448 [4020] Unrecognized accel key 'p ', accel string ignored.
00000557 436.76583862 [4020] Unrecognized accel key 'x ', accel string ignored.
00000558 436.76605225 [4020] Unrecognized accel key 'z ', accel string ignored.
00000559 436.76623535 [4020] Unrecognized accel key 'y ', accel string ignored.
00000560 436.76644897 [4020] Unrecognized accel key 'x ', accel string ignored.
00000561 436.76660156 [4020] Unrecognized accel key 'c ', accel string ignored.
00000562 436.76678467 [4020] Unrecognized accel key 'v ', accel string ignored.
00000563 436.76693726 [4020] Unrecognized accel key 'f ', accel string ignored.
00000564 436.76712036 [4020] Unrecognized accel key 'f3 ', accel string ignored.
00000565 436.76733398 [4020] Unrecognized accel key 'f3 ', accel string ignored.
00000566 436.76748657 [4020] Unrecognized accel key 'h ', accel string ignored.
00000567 436.76782227 [4020] Unrecognized accel key 'f4 ', accel string ignored.
00000568 436.76803589 [4020] Unrecognized accel key 'a ', accel string ignored.
00000569 436.76824951 [4020] Unrecognized accel key 'f7 ', accel string ignored.
00000570 436.76846313 [4020] Unrecognized accel key 'f9 ', accel string ignored.
00000571 436.76864624 [4020] Unrecognized accel key 'f9 ', accel string ignored.
00000572 436.76879883 [4020] Unrecognized accel key 'f10 ', accel string ignored.
00000573 436.76901245 [4020] Unrecognized accel key 'f12 ', accel string ignored.
00000574 436.76919556 [4020] Unrecognized accel key 'f12 ', accel string ignored.
00000575 436.76934814 [4020] Unrecognized accel key 'f11 ', accel string ignored.
00000576 436.76956177 [4020] Unrecognized accel key 't ', accel string ignored.
00000577 436.76974487 [4020] Unrecognized accel key 't ', accel string ignored.
00000578 436.76995850 [4020] Unrecognized accel key 'p ', accel string ignored.
00000579 436.77011108 [4020] Unrecognized accel key 'f7 ', accel string ignored.
00000580 436.77026367 [4020] Unrecognized accel key 'f9 ', accel string ignored.
00000581 436.77038574 [4020] Unrecognized accel key 'f9 ', accel string ignored.
00000582 436.77050781 [4020] Unrecognized accel key 'f10 ', accel string ignored.
00000583 436.77062988 [4020] Unrecognized accel key 'f12 ', accel string ignored.
00000584 436.77081299 [4020] Unrecognized accel key 'f12 ', accel string ignored.
00000585 436.77093506 [4020] Unrecognized accel key 'f11 ', accel string ignored.
00000586 436.77105713 [4020] Unrecognized accel key 't ', accel string ignored.
00000587 436.77117920 [4020] Unrecognized accel key 't ', accel string ignored.
00000588 436.77136230 [4020] Unrecognized accel key 'p ', accel string ignored.
00000589 436.77151489 [4020] Unrecognized accel key 'tab ', accel string ignored.
00000590 436.77169800 [4020] Unrecognized accel key 'tab ', accel string ignored.
00000591 436.77194214 [4020] Unrecognized accel key 'q ', accel string ignored.
00000592 436.77212524 [4020] Unrecognized accel key 'q ', accel string ignored.
00000593 436.77239990 [4020] Unrecognized accel key 'space ', accel string ignored.
00000594 436.77258301 [4020] Unrecognized accel key 'space ', accel string ignored.
00000595 436.77273560 [4020] Unrecognized accel key 'space ', accel string ignored.
00000596 436.77294922 [4020] Unrecognized accel key 'space ', accel string ignored.
00000597 436.77313232 [4020] Unrecognized accel key 'd ', accel string ignored.
00000598 436.77331543 [4020] Unrecognized accel key 'f1 ', accel string ignored.
00000599 436.77349854 [4020] Unrecognized accel key 'f5 ', accel string ignored.
00000600 436.77368164 [4020] Unrecognized accel key 'space ', accel string ignored.
00000601 436.77380371 [4020] Unrecognized accel key 'space ', accel string ignored.
00000602 436.77392578 [4020] Unrecognized accel key 'space ', accel string ignored.
00000603 436.77407837 [4020] Unrecognized accel key 'space ', accel string ignored.
00000604 436.77420044 [4020] Unrecognized accel key 'd ', accel string ignored.
00000605 436.77432251 [4020] Unrecognized accel key 'f1 ', accel string ignored.
00000606 436.77444458 [4020] Unrecognized accel key 'f5 ', accel string ignored.
00000607 436.77465820 [4020] Unrecognized accel key 'up ', accel string ignored.
00000608 436.77487183 [4020] Unrecognized accel key 'down ', accel string ignored.
00000609 436.77502441 [4020] Unrecognized accel key 'c ', accel string ignored.
00000610 436.77523804 [4020] Unrecognized accel key 'up ', accel string ignored.
00000611 436.77539063 [4020] Unrecognized accel key 'down ', accel string ignored.
00000612 436.77551270 [4020] Unrecognized accel key 'c ', accel string ignored.
00000613 436.77706909 [4020] Unrecognized accel key 'b ', accel string ignored.
00000614 436.77749634 [4020] Unrecognized accel key 'b ', accel string ignored.
00000615 436.77804565 [4020] Unrecognized accel key 'f2 ', accel string ignored.
00000616 436.77822876 [4020] Unrecognized accel key 'f2 ', accel string ignored.
00000617 436.77844238 [4020] Unrecognized accel key 'right ', accel string ignored.
00000618 436.77859497 [4020] Unrecognized accel key 'left ', accel string ignored.
00000619 436.77880859 [4020] Unrecognized accel key 'down ', accel string ignored.
00000620 436.77899170 [4020] Unrecognized accel key 'up ', accel string ignored.
00000621 436.77914429 [4020] Unrecognized accel key 'pgdn ', accel string ignored.
00000622 436.77932739 [4020] Unrecognized accel key 'pgup ', accel string ignored.
00000623 436.77966309 [4020] Unrecognized accel key 'f8 ', accel string ignored.
00000624 436.77987671 [4020] Unrecognized accel key 'g ', accel string ignored.
00000625 436.78002930 [4020] Unrecognized accel key 'f2 ', accel string ignored.
00000626 436.78018188 [4020] Unrecognized accel key 'f2 ', accel string ignored.
00000627 436.78030396 [4020] Unrecognized accel key 'right ', accel string ignored.
00000628 436.78042603 [4020] Unrecognized accel key 'left ', accel string ignored.
00000629 436.78054810 [4020] Unrecognized accel key 'down ', accel string ignored.
00000630 436.78067017 [4020] Unrecognized accel key 'up ', accel string ignored.
00000631 436.78079224 [4020] Unrecognized accel key 'pgdn ', accel string ignored.
00000632 436.78094482 [4020] Unrecognized accel key 'pgup ', accel string ignored.
00000633 436.78106689 [4020] Unrecognized accel key 'f8 ', accel string ignored.
00000634 436.78118896 [4020] Unrecognized accel key 'g ', accel string ignored.
00000635 436.78140259 [4020] Unrecognized accel key 'r ', accel string ignored.
00000636 436.78152466 [4020] Unknown accel modifier: 'numpad '
00000637 436.78161621 [4020] Unknown accel modifier: 'numpad '
00000638 436.78182983 [4020] Unrecognized accel key 'numpad / ', accel string ignored.
00000639 436.78198242 [4020] Unrecognized accel key 'numpad * ', accel string ignored.
00000640 436.78225708 [4020] Unrecognized accel key 'r ', accel string ignored.
00000641 436.78228760 [4020] Unknown accel modifier: 'numpad '
00000642 436.78231812 [4020] Unknown accel modifier: 'numpad '
00000643 436.78244019 [4020] Unrecognized accel key 'numpad / ', accel string ignored.
00000644 436.78262329 [4020] Unrecognized accel key 'numpad * ', accel string ignored.
00000645 436.78286743 [4020] Unrecognized accel key 'home ', accel string ignored.
00000646 436.78305054 [4020] Unrecognized accel key 'end ', accel string ignored.
00000647 436.78326416 [4020] Unrecognized accel key 'v ', accel string ignored.
00000648 436.78363037 [4020] Unrecognized accel key 'home ', accel string ignored.
00000649 436.78378296 [4020] Unrecognized accel key 'end ', accel string ignored.
00000650 436.78390503 [4020] Unrecognized accel key 'v ', accel string ignored.
00000651 436.78436279 [4020] Unrecognized accel key 'numpad / ', accel string ignored.
00000652 436.78457642 [4020] Unknown accel modifier: 'numpad '
00000653 436.78469849 [4020] Unknown accel modifier: 'numpad '
00000654 436.78491211 [4020] Unrecognized accel key 'numpad / ', accel string ignored.
00000655 436.78494263 [4020] Unknown accel modifier: 'numpad '
00000656 436.78500366 [4020] Unknown accel modifier: 'numpad '
00000657 436.78613281 [4020] Unrecognized accel key 'f5 ', accel string ignored.
00000658 436.78662109 [4020] Unrecognized accel key 'numpad 0 ', accel string ignored.
00000659 436.78683472 [4020] Unrecognized accel key 'numpad 1 ', accel string ignored.
00000660 436.78701782 [4020] Unrecognized accel key 'numpad 2 ', accel string ignored.
00000661 436.78723145 [4020] Unrecognized accel key 'numpad 3 ', accel string ignored.
00000662 436.78741455 [4020] Unrecognized accel key 'numpad 4 ', accel string ignored.
00000663 436.78759766 [4020] Unrecognized accel key 'numpad 5 ', accel string ignored.
00000664 436.78784180 [4020] Unrecognized accel key 'numpad 0 ', accel string ignored.
00000665 436.78805542 [4020] Unrecognized accel key 'numpad 1 ', accel string ignored.
00000666 436.78820801 [4020] Unrecognized accel key 'numpad 2 ', accel string ignored.
00000667 436.78842163 [4020] Unrecognized accel key 'numpad 3 ', accel string ignored.
00000668 436.78863525 [4020] Unrecognized accel key 'numpad 4 ', accel string ignored.
00000669 436.78884888 [4020] Unrecognized accel key 'numpad 5 ', accel string ignored.
00000670 436.78903198 [4020] Unrecognized accel key 'numpad 1 ', accel string ignored.
00000671 436.78915405 [4020] Unrecognized accel key 'numpad 2 ', accel string ignored.
00000672 436.78927612 [4020] Unrecognized accel key 'numpad 3 ', accel string ignored.
00000673 436.78939819 [4020] Unrecognized accel key 'numpad 4 ', accel string ignored.
00000674 436.78952026 [4020] Unrecognized accel key 'numpad 5 ', accel string ignored.
00000675 436.78970337 [4020] Unrecognized accel key 'numpad 0 ', accel string ignored.
00000676 436.78982544 [4020] Unrecognized accel key 'numpad 1 ', accel string ignored.
00000677 436.78994751 [4020] Unrecognized accel key 'numpad 2 ', accel string ignored.
00000678 436.79006958 [4020] Unrecognized accel key 'numpad 3 ', accel string ignored.
00000679 436.79022217 [4020] Unrecognized accel key 'numpad 4 ', accel string ignored.
00000680 436.79034424 [4020] Unrecognized accel key 'numpad 5 ', accel string ignored.
00000681 436.79046631 [4020] Unrecognized accel key 'numpad 0 ', accel string ignored.
00000682 436.79064941 [4020] Unrecognized accel key 'numpad 1 ', accel string ignored.
00000683 436.79077148 [4020] Unrecognized accel key 'numpad 2 ', accel string ignored.
00000684 436.79089355 [4020] Unrecognized accel key 'numpad 3 ', accel string ignored.
00000685 436.79101563 [4020] Unrecognized accel key 'numpad 4 ', accel string ignored.
00000686 436.79113770 [4020] Unrecognized accel key 'numpad 5 ', accel string ignored.
00000687 436.79153442 [4020] Unrecognized accel key 'f5 ', accel string ignored.
00000688 436.79174805 [4020] Unrecognized accel key 'escape ', accel string ignored.
00000689 436.79190063 [4020] Unrecognized accel key 'f5 ', accel string ignored.
00000690 436.79211426 [4020] Unrecognized accel key 'f5 ', accel string ignored.
00000691 436.79223633 [4020] Unrecognized accel key 'escape ', accel string ignored.
00000692 436.79235840 [4020] Unrecognized accel key 'f5 ', accel string ignored.
00000693 436.79257202 [4020] Unrecognized accel key 'f6 ', accel string ignored.
00000694 436.79278564 [4020] Unrecognized accel key 'f6 ', accel string ignored.
00000695 436.79824829 [4020] Unrecognized accel key 'f1 ', accel string ignored.
00000696 436.81378174 [4020] Unknown accel modifier: 'numpad '
00000697 436.81381226 [4020] No accel key found, accel string ignored.
00000698 436.81393433 [4020] Unknown accel modifier: 'numpad '
00000699 436.81399536 [4020] No accel key found, accel string ignored.
00000700 436.81420898 [4020] Unrecognized accel key 'numpad /', accel string ignored.
00000701 436.81436157 [4020] Unrecognized accel key 'numpad *', accel string ignored.
00000702 436.81457520 [4020] Unrecognized accel key 'numpad 0', accel string ignored.
00000703 436.81475830 [4020] Unrecognized accel key 'numpad 1', accel string ignored.
00000704 436.81491089 [4020] Unrecognized accel key 'numpad 2', accel string ignored.
00000705 436.81509399 [4020] Unrecognized accel key 'numpad 3', accel string ignored.
00000706 436.81524658 [4020] Unrecognized accel key 'numpad 4', accel string ignored.
00000707 436.81542969 [4020] Unrecognized accel key 'numpad 5', accel string ignored.
00000708 436.81564331 [4020] Unrecognized accel key 'numpad 0', accel string ignored.
00000709 436.81579590 [4020] Unrecognized accel key 'numpad 1', accel string ignored.
00000710 436.81597900 [4020] Unrecognized accel key 'numpad 2', accel string ignored.
00000711 436.81613159 [4020] Unrecognized accel key 'numpad 3', accel string ignored.
00000712 436.81631470 [4020] Unrecognized accel key 'numpad 4', accel string ignored.
00000713 436.81649780 [4020] Unrecognized accel key 'numpad 5', accel string ignored.
00000714 436.81698608 [4020] Unrecognized accel key 'numpad /', accel string ignored.
00000715 436.81710815 [4020] Unknown accel modifier: 'numpad '
00000716 436.81716919 [4020] No accel key found, accel string ignored.
00000717 436.81726074 [4020] Unknown accel modifier: 'numpad '
00000718 436.81729126 [4020] No accel key found, accel string ignored.
00000719 452.78814697 [4020] SSETools 0.1
00000720 452.90887451 [4020] Danette: N=01 Destination Tucson (1)_Track01.avs
00000721 452.90890503 [4020] Danette: NLEN=38
00000722 452.90896606 [4020] Danette: ELen=34
StainlessS
29th October 2021, 21:25
Very strange [a bit Halloweeny].
I get same "unrecognized accel key" stuff as you from AvsPMod, maybe we got some optional script missing or something.
(I usually use PsPad and VDub2)
Danette
29th October 2021, 22:42
Yes: I am using AvsPmod, also.
kuchikirukia
2nd November 2021, 08:30
I even try to avoid mice with back/forward navigation buttons on them
Remap them to copy and paste. It's a game-changer.
hello_hello
2nd November 2021, 16:00
Remap them to copy and paste. It's a game-changer.
That's not a bad idea.
Do you remap the Windows key on the keyboard? I've been thinking of doing that for a long time but never got around to it. One day I'll accidentally tap it and my head will explode.
Danette
10th November 2021, 17:45
Well, I'm back with the same problem. This time, inserting and removing the DebugView line did not cause that odd recovery that I mentioned, above, in post 70.
It was working fine for a while. The only change, since last running it, is that I moved to AviSynth+ 3.7 and updated a lot of filters.
StainlessS
10th November 2021, 17:53
Yeah but,
what did the output to DebugView say
RT_debugF("N=%s\nNLEN=%d\nELen=%d",N,NLen,ELen,name="Danette: ")
Same line where error occurs I take it.
[EDIT: Just the RT_DebugF line, not all the AvsPMod accelerator stuff. and of course the error message]
EDIT: The line will begin with "Danette: "
EDIT: And temp remove all non used filters from plugins.
EDIT: Change to this, just incase.
RT_debugF("N=%s\nNLEN=%d\nELen=%d",string(N),string(NLen),string(ELen),name="Danette: ")
Danette
10th November 2021, 19:08
I removed nearly all filters, leaving just enough to keep this particular script operating, but the same error appeared. The error, referring to line 14, is:
LeftStr: Negative character count not allowed
I could not get this line to work:
RT_debugF("N=%s\nNLEN=%d\nELen=%d",string(N),string(NLen),string(ELen),name="Danette: ")
It threw the error message: RT_DebugF: Type='d', Expecting Int data (2)
So, I ran this, again:
RT_debugF("N=%s\nNLEN=%d\nELen=%d",N,NLen,ELen,name="Danette: ")
The DebugView results are:
[6800] Danette: N=New File (2)
[6800] Danette: NLEN=12
[6800] Danette: ELen=-1
Similar to the earlier post.
StainlessS
10th November 2021, 19:15
Oops, I changed from int (requires %d) to string() [requires %s], so should have been
RT_debugF("N=%s\nNLEN=%s\nELen=%s",string(N),string(NLen),string(ELen),name="Danette: ")
No matter.
I'll look again at the script [I remember it does look a bit wierd, but as it worked, I did not look further].
EDIT: Is it [hello_hello] script from post 46 ?
StainlessS
10th November 2021, 19:43
From previous post edit,
EDIT: Is it [hello_hello] script from post 46 ?
If it is post #46, then [EDIT: or 67]
N = ScriptFile() # Name of current script (no path)
LN = LCase(N)
NLen = StrLen(N)
ELen = FindStr(LN, ".avs") - 1 # Length left of Extension, of current scipt
File_Name = LeftStr(N, NLen-(NLen-ELen)) # Error
The DebugView results are:
[6800] Danette: N=New File (2)
[6800] Danette: NLEN=12
[6800] Danette: ELen=-1
So, looks like current script is called "New File (2)",
and this line
ELen = FindStr(LN, ".avs") - 1 # Length left of Extension, of current scipt
Cannot find the ".avs" extension in "New File (2)". (so Elen= -1, and produces error in LeftStr)
So,
question is, how come you have a avs script called "New File (2)" [without .avs extension]
EDIT: and this bit did my head in a bit,
File_Name = LeftStr(N, NLen-(NLen-ELen)) # Error Line
should it be
File_Name = LeftStr(N, ELen) # Where -ve ELen is error for LeftStr
Danette
10th November 2021, 21:49
Yes, the script is from [hello_hello] post 46, which I renamed to MoireEffect for the avsi. Don’t remember why I didn’t use post 67 (which doesn’t work, either).
Why it’s called "New File (2)", I have no idea. It is in a file having the avsi extension.
I tried replacing the
File_Name = LeftStr(N, NLen-(NLen-ELen)) # Error Line
with
File_Name = LeftStr(N, ELen) # Where -ve ELen is error for LeftStr
but the error message remains.
StainlessS
10th November 2021, 22:07
but the error message remains.
Yeah, because "New File (2)" dont have ".avs" extension.
try, replace this
N = ScriptFile()
LN = LCase(N)
NLen = StrLen(N)
ELen = FindStr(LN, ".avs") - 1
File_Name = LeftStr(N, NLen-(NLen-ELen))
FName = (FileName == "") ? File_Name : FileName
File = FName + "_Combing.txt"
With
File_Name = ScriptFile().RT_FilenameSplit(14) # Drive + Path + name (no extension)
FName = (FileName == "") ? File_Name : FileName
File = FName + "_Combing.txt"
RT_DebugF("File = '%s'",File,name="Danette: ")
Danette
10th November 2021, 22:32
Removing those lines didn't work, but the replacement lines did work. At least, there is no error message being generated.
I'll try a batch run and see if that does what it should do.
I'll report back ...good or bad.
hello_hello
11th November 2021, 10:25
From post #70
00000720 452.90887451 [4020] Danette: N=01 Destination Tucson (1)_Track01.avs
00000721 452.90890503 [4020] Danette: NLEN=38
00000722 452.90896606 [4020] Danette: ELen=34
Maybe I'm even more mathematically challenged than I realised, but I've counted the characters in the file name several times and each time I've counted 37.
I could create a similar problem by starting a new script in AvsPMod.
https://i.postimg.cc/8F76TLNS/1.jpg (https://postimg.cc/8F76TLNS)
https://i.postimg.cc/kVQbpqcr/2.jpg (https://postimg.cc/kVQbpqcr)
Originally I thought the extra character in the name was the culprit, but for me it works even before saving the script to my hard drive, as long as when I create a new tab I change the name to give it an avs extension.
Did the script have an avs extension in the tab? DebugView shows it having one, but you said it was working at that time.
So the new tab name might be
>*New File (2)
and you can rename it as
>*New File (2).avs
After refreshing the video preview it becomes
*New File (2).avs
and there's no error.
It seems there's no need to actually save the script for it to work. Is there a setting I can't find for telling AvsPMod to give new tab names an avs extension? I don't know why it shouldn't, instead of waiting for the script to be saved before automatically adding it.
If the StainlessS version works you might as well use it, but this will also prevent the error. Without an avs extension, it'll just use the full file name for the text file's name. The line I changed is blue.
N = ScriptFile()
LN = LCase(N)
NLen = StrLen(N)
ELen = FindStr(LN, ".avs") - 1
File_Name = (ELen > 0) ? LeftStr(N, ELen) : N
FName = (FileName == "") ? File_Name : FileName
File = FName + "_Combing.txt"
Until the script is saved though, the text file will be written to the AvsPMod directory, assuming, I suppose, it resides somewhere where Windows will let it.
hello_hello
11th November 2021, 12:10
EDIT: and this bit did my head in a bit,
File_Name = LeftStr(N, NLen-(NLen-ELen)) # Error Line
should it be
File_Name = LeftStr(N, ELen) # Where -ve ELen is error for LeftStr
LOL! I've tried to come up with a justification for doing it that way. I'm certain I would've had one at the time, but apparently it wasn't based in reality, because it eludes me now.
So yes, this would produce exactly the same result (with the extra bit added to prevent the error when there's no extension).
N = ScriptFile()
LN = LCase(N)
NLen = StrLen(N)
ELen = FindStr(LN, ".avs") - 1
File_Name = (ELen > 0) ? LeftStr(N, ELen) : N
FName = (FileName == "") ? File_Name : FileName
File = FName + "_Combing.txt"
Edit: I've changed it in my previous post too.
Danette
11th November 2021, 21:33
File_Name = ScriptFile().RT_FilenameSplit(14) # Drive + Path + name (no extension)
FName = (FileName == "") ? File_Name : FileName
File = FName + "_Combing.txt"
RT_DebugF("File = '%s'",File,name="Danette: ")
Finished running a 36-file batch and all went well with this new code. Thanks.
Originally I thought the extra character in the name was the culprit, but for me it works even before saving the script to my hard drive, as long as when I create a new tab I change the name to give it an avs extension.
Did the script have an avs extension in the tab? DebugView shows it having one, but you said it was working at that time.
Ahhh …light bulb went on. This explains the question raised by StainlessS and, probably, why the error appeared after so many successful runs. It never occurred to me that the tab name, in AvsPmod, had anything to do with the running of the script. Apparently, it does. I think that what might have been happening, when running successfully, is that AvsPmod changes a new tab name to the name of the file with the “.avs” extension, once ANY script in that particular tab is saved. Previously, I was running the MoireEffect (my name for it) filter in tabs that had been used for other projects and saved (the filename doesn’t seem to matter, just the .avs extension).
If the StainlessS version works you might as well use it, but this will also prevent the error. Without an avs extension, it'll just use the full file name for the text file's name.
With the above knowledge, I could, now, use the original script and run successfully by simply saving a script, in AvsPmod, first. However, since StainlessS’ replacement code negates the need for that step, I’ll just keep that code, unless either of you think the alternative code is better.
hello_hello
12th November 2021, 09:17
With the above knowledge, I could, now, use the original script and run successfully by simply saving a script, in AvsPmod, first. However, since StainlessS’ replacement code negates the need for that step, I’ll just keep that code, unless either of you think the alternative code is better.
The change I added to mine only tries to remove the file extension from the name if it exists, and the StainlessS replacement effectively does the same thing, as far as I can tell, so it doesn't matter which one you use.
If you don't save the script first, where is the text file written? For me it's the AvsPmod directory. If it's the same for the StainlessS version (I assume so) you could force the text file to be written to a specific directory for unsaved scripts, but it probably makes more sense just save it first.
Having said that.... change the file path in red to whatever you prefer (it's only for unsaved scripts). If the path doesn't exist you'll get an error message. If you specify a path that would never exist (or leave it as it is), I guess you could use the error message as a reminder to save the script. Once it's saved, you can reload the video and it should work normally and the text file will be written to the same location as the script.
You'll also need to update the lines in blue.
N = ScriptFile()
LN = LCase(N)
NLen = StrLen(N)
ELen = FindStr(LN, ".avs") - 1
Dir = (StrLen(ScriptDir()) < 2) ? "Z:\Save The Script\" : ""
File_Name = (ELen > 0) ? LeftStr(N, ELen) : N
FName = (FileName == "") ? Dir + File_Name : FileName
File = FName + "_Combing.txt"
Vid = Vid.GreyScale()
CombTest = BlankClip(Vid, Color=color_red)
Vid = Vid.TFM(Clip2=CombTest).TDecimate()
global Everything = All
StainlessS
12th November 2021, 13:11
You can use below to replace/remove extension without any plugins required.
Or with no dependancies,
Function ReplaceExtension(String fn,String "Ext") { # https://forum.doom9.org/showthread.php?p=1896882#post1896882
Ext=Default(Ext,"") # Default is "", ie STRIP extension, replace with "" (Ext should include DOT eg ".mp4")
rfn=fn.RevStr
i=rfn.FindStr(".")
Return (i==0) ? fn : rfn.MidStr(i+1).RevStr + Ext
}
BlankClip(width=320,height=240)
fn="D:\TEST\Something.avs"
s1=fn.ReplaceExtension()
s2=fn.ReplaceExtension(".mp4")
Subtitle(fn + "\n" + s1 +"\n" + s2,lsp=0)
https://i.postimg.cc/d1CH5sHt/t-00.jpg (https://postimages.org/)
EDIT: It is not bullet proof, eg fn="D:\TEST.DIRECTORY\Something" would fail chopping off ".DIRECTORY\Something".
EDIT:
File_Name = ScriptFile().RT_FilenameSplit(14) # Drive + Path + name (no extension)
FName = (FileName == "") ? File_Name : FileName
File = FName + "_Combing.txt"
RT_DebugF("File = '%s'",File,name="Danette: ")
I think I cocked up there, should be
File_Name = ScriptFile().RT_FilenameSplit(7) # Drive + Path + name (no extension)
RT_FilenameSplit(string filename,int "get"=15)
Splits the un-named filename string into component parts selected by 'get' bit flags arg and returns the
parts joined together.
'Get' (default 15, 1 -> 15), If set, Bit 0=DRIVE, 1=Dir, 2=Name, 4=Extension.
Add 1 for Drive (bit 0), add 2 for Dir (bit 1), add 4 for Name (bit 2), add 8 for Extension (bit 3).
Some combinations do not make sense, eg Drive + Extension (1+8=9). Below sensible options.
1 = Drive (includes trailing ':')
2 = Dir (includes trailing '\')
3 = Drive + Dir
4 = Name
6 = Dir + Name
7 = Drive + Dir + Name
8 = Extension (includes leading '.')
12 = Name + Extension
14 = Dir + Name + Extension # No Drive part
15 = Drive + Dir + Name + Extension
Assuming a current working directory of eg "D:\avs\avi\", 'filename'="test.avi" and 'get'=15, returns "D:\avs\avi\test.avi",
so given a relative filename and default 'get'=15, is equivalent to RT_GetFullPathName(filename).
Danette
14th November 2021, 20:14
If you don't save the script first, where is the text file written? For me it's the AvsPmod directory. If it's the same for the StainlessS version (I assume so) you could force the text file to be written to a specific directory for unsaved scripts, but it probably makes more sense just save it first.
The initial problem was during preview only, before anything was saved. When I opened a new file in AvsPmod (the "New File" reported in DebugView) and applied the filter, the error message occurred. So, I stopped before trying to save the script. I now know that, had I used an AvsPmod tab that had a saved script in it, then the error message would not occur.
I'm fine, now, with StainlessS' script change, which works in the preview mode before, and after, any script saving activity.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.