Log in

View Full Version : SysInfo plugin v0.1.2.9


Pages : 1 2 [3] 4 5 6

Groucho2004
25th April 2020, 16:52
Test 0.1.1.6.02 (http://www.mediafire.com/file/suge5fiwt8vvcdc/SysInfo_0.1.1.6.02.7z/file):

Fixed RC file
Added AI_GScriptExists()
Fixed AI_IsAvs26()
Changed linking option MT to MD for dynamic linking

real.finder
25th April 2020, 16:55
IsNeoPlus == IsAVSNeo. Neo implies "+". What am I missing?

it was typo, I already edit it

StainlessS
25th April 2020, 17:15
IsNeoPlus == IsAVSNeo. Neo implies "+". What am I missing?
HeHeHe https://www.cosgan.de/images/smilie/froehlich/s0452.gif
Sorry GG, I aint got back to the X_ type stuff, spring cleaning and the like.
(and I'm feelin' real lazy :( )

Groucho2004
25th April 2020, 17:33
it was typo, I already edit itAh, OK.

Groucho2004
26th April 2020, 09:32
Test 0.1.1.6.03 (http://www.mediafire.com/file/mw3uaj1ofxfqztv/SysInfo_0.1.1.6.03.7z/file):

Added AI_AvsVersionString
Returns a string such as "AviSynth+ 3.5 (r3106, 3.5, x86_64)"

Added AI_AvsFileVersion
Returns the file version from the version resource as a string (e.g. 2.5.8.5)

Added AI_AvsProductVersion
Returns the product version from the version resource as a string (e.g. 2.5.8.5)

Added AI_AvsPlusBuildNumber
Returns the Avs+ (Avs Neo) build number as an int or "-1" if not present.



My granddaughter stole the last of my weed. :devil:
https://i.postimg.cc/NM28FN40/stoned-elf.gif

StainlessS
26th April 2020, 17:40
Nice GIF, did you make the gif yourself, if so, how many colors ? [thought was limited to 256, looks like there could be more].

Also, I can see the family resemblance, ears mainly.

EDIT:
Added AI_AvsVersionString
Returns a string such as "AviSynth+ 3.5 (r3106, 3.5, x86_64)"
In what way does it differ from VersionString ?

return MessageClip(VersionString+chr(10)+AI_AvsVersionString)

https://i.postimg.cc/cL4GtVwP/Cmp-00.jpg

Groucho2004
26th April 2020, 17:50
Nice GIF, did you make the gif yourself, if so, how many colors ? [thought was limited to 256, looks like there could be more].I didn't make it.

Also, I can see the family resemblance, ears mainly.I agree.

In what way does it differ from VersionStringIt's the same. I suppose it's redundant. I'll remove it.

StainlessS
26th April 2020, 17:53
Maybe this one intended

AvsVersionNumberString() Returns Avisynth version number embedded in Avisynths VersionString, for eg Avs+ v3.4.2, "AviSynth+ 3.4.2 (r2983, linux3, i386)" would return "3.4.2"


EDIT: Note VersionNumber from avs+ 3.5 returns 2.60. [ie not 2.58]. Need extract from VersionString.


# Return length of string S that matches any character in Chars set of characters [Default case insignificant]. # StrMatchChrLen("1234.567abcd","0123456789.") = 8
Function StrMatchChrLen(String s,String Chars,Bool "Sig") {
Function __StrMatchChrLen_LOW(String s,String Chars,int n) { c=s.MidStr(n+1,1) Return(c==""||Chars.FindStr(c)==0) ? n : s.__StrMatchChrLen_LOW(Chars,n+1) }
Sig=Default(False) # Default Case Insignificant
s=(Sig)?s:s.UCASE Chars=(Sig)?Chars:Chars.UCASE
Return __StrMatchChrLen_LOW(s,Chars,0)
}

# Return length of string s that DOES NOT match any character in Chars set of characters [Default case insignificant]. # StrBrkChrLen("1234.567,abcd",",.") = 4
# If 1st character of s matches any in Chars set, then returns 0. # StrBrkChrLen("1234.567,abcd","321") = 0
# If no characters in s match any character in Chars set, then returns length of string s. # StrBrkChrLen("1234.567,abcd","NOP") = 13
Function StrBrkChrLen(String s,String Chars,Bool "Sig") {
Function __StrBrkChrLen_LOW(String s,String Chars,int n) {c=s.MidStr(n+1,1) Return(c==""||Chars.FindStr(c)!=0)?n:s.__StrBrkChrLen_LOW(Chars,n+1)}
Sig=Default(False) # Default Case Insignificant
s=(Sig)?s:s.UCASE Chars=(Sig)?Chars:Chars.UCASE
Return __StrBrkChrLen_LOW(s,Chars,0)
}

Function AvsVersionNumberPartNo(int PartNo) { # Get dot separated Version Part as Int from AvsVersionNumberString[eg "1.2.3"], Where PartNo=1->3. 1=MAJOR version: 2=MINOR version : 3=BUGFIX version
PartNo=Min(Max(PartNo,1),3) # Limit Range 1->3
s=AvsVersionNumberString
d=s.FindStr(".") n1=(d==0)?s:s.LeftStr(d-1) s=(d==0)?"":s.MidStr(d+1)
d=s.FindStr(".") n2=(d==0)?s:s.LeftStr(d-1) s=(d==0)?"":s.MidStr(d+1)
d=s.FindStr(".") n3=(d==0)?s:s.LeftStr(d-1)
ns=(PartNo==1)?n1:(PartNo==2)?n2:n3
Return (ns=="")?0:ns.Eval
}

Function IsAvsVerOrGreater(int a,int "b",int "c") { # Compares with version obtained from VersionString
b=Default(b,0) c=Default(c,0)
aa=AvsVersionNumberPartNo(1) bb=AvsVersionNumberPartNo(2) cc=AvsVersionNumberPartNo(3)
return (aa>a) || (aa==a && (bb>b || (bb==b && cc>=c)))
}

########
Function AvsInit_OneTime_Install_GScript_Funcs() {
# Install Directory processing funcs AvsInit_DImport(), AvsInit_DLoad() and AvsInit_DLoadConditional(). Call ONCE ONLY else error.
myName = "AvsInit_OneTime_Install_GScript_Funcs: "
IsPlus=IsAvsPlus HasGScript=GScriptExists
Assert(IsPlus || HasGScript,RT_String("%sMust have Avs+ or GScript",myName))
Assert(GScript_OneTime_Install_String!="",RT_String("%sGScript_Funcs Already Installed",myName))
(HasGScript) ? GSCript(GScript_OneTime_Install_String) : Eval(GScript_OneTime_Install_String)
RT_DebugF("Functions AvsInit_DImport() and AvsInit_DLoad() Installed",name=myName)
Global GScript_OneTime_Install_String = "" # Prevent repeat Install
}

Groucho2004
26th April 2020, 17:56
Maybe this one intended

AvsVersionNumberString() Returns Avisynth version number embedded in Avisynths VersionString, for eg Avs+ v3.4.2, "AviSynth+ 3.4.2 (r2983, linux3, i386)" would return "3.4.2"
No, I simply forgot about the internal function when I wrote that.

Groucho2004
26th April 2020, 18:00
EDIT: Note VersionNumber from avs+ 3.5 returns 2.60. [ie not 2.58].Can you elaborate?

StainlessS
26th April 2020, 18:02
n=VersionNumber # from Avs 3.5
s=string(n)
return MessageClip(s)

https://i.postimg.cc/xjsfQw8x/Cmp-01.jpg (https://postimages.org/)

EDIT:

Function IsAvs26() { VersionNumber>=2.6} # IsAvs26=true, means NOT 2.58, ie 2.6 or above. at least 2.6 colorspaces supported by Avs.


Maybe a bit weird but thats what we got.

Function IsAvsPlus() { FindStr(VersionString,"AviSynth+")!=0||IsAvsNeo}

Means HBD colorspaces supported. [and other avs+ extensions, so includes NEO]
EDIT: Sort of defacto standards for scripts as evolved over time.

"Nobody said life was supposed to be perfect". [Lewis Black - well me really but it sounds like him]

Groucho2004
26th April 2020, 18:07
n=VersionNumber # from Avs 3.5
s=string(n)
return MessageClip(s)

https://i.postimg.cc/xjsfQw8x/Cmp-01.jpg (https://postimages.org/)Yes, I know. The versioning in AVS+ is all over the place and has to be fixed. 'VersionString', 'VersionNumber' and the versions from the version info resource should return consistent values.

StainlessS
26th April 2020, 18:17
That may be so, but also needs to work for 2.6 std and 2.58.

Maybe you take it upon yourself to sort out the mess.
As a stop gap measure, a temp script could be issued (I could do it) that uses your functions, but using established defactor script function names.
Over time, scripts could transition to your function names directly.

In this fashoin, we could eventually make sense of life, the universe, and everything. [but it might take a few million years]

Groucho2004
26th April 2020, 18:27
EDIT: Note VersionNumber from avs+ 3.5 returns 2.60. [ie not 2.58]. Need extract from VersionString.I disagree. The 3.5.x.x is already in the version resource, it simply wasn't updated in the current build (all other AVS versions return this correctly). No string acrobatics needed. In fact, the only function in SysInfo where I have to mess around with the VersionString is 'AI_AvsPlusBuildNumber'. Everything else I derived with 'FunctionExists' logic.

To re-iterate, FileVersion resource item returns:
AVS 2.5.8: "2.5.8.5"
AVS 2.6.0: "2.6.0.6"
AVS 2.6.1: "2.6.1.0"
AVS 2.6.0 (SEt): "2.6.0.5"
AVS+ (r3106): "3.5.0.0"

StainlessS
26th April 2020, 18:29
Wherever you get it from it has to work across avs versions. [otherwise little point]

StainlessS
26th April 2020, 18:45
OK, content of your edit looks good to me.
Dont know what Ultim used in his original avs+ stable. I assume that works too.

Groucho2004
26th April 2020, 18:55
OK, content of your edit looks good to me.I looked at the AVS+ code and now I know why the FileVersion resource returns 3.5.0.0 instead of 3.5.1.0. The third digit is the 'bugfixVersion' and is not referenced in avisynth.rc.

Dont know what Ultim used in his original avs+ stable. I assume that works too.I think it was 0.1.0.0. :(

StainlessS
26th April 2020, 18:59
GG,
You could selectively add missing version functions, only AddFunction() where not already natively present, and using the current AVS+ function names.
2.58 add all missing version type functions.

eg the builtin equivalent to this thing [implemented recenly by qyot27, cant remember the exact name]

Function IsAvsVerOrGreater(int a,int "b",int "c") { # Compares with version obtained from VersionString
b=Default(b,0) c=Default(c,0)
aa=AvsVersionNumberPartNo(1) bb=AvsVersionNumberPartNo(2) cc=AvsVersionNumberPartNo(3)
return (aa>a) || (aa==a && (bb>b || (bb==b && cc>=c)))
}


So SysInfo would in above cases use the currently available avs+ 3.5.x names [not prepended with "SI_" or whatever].

Bit of a kludge, but it could work.

EDIT: You could even re-implement in all cases, loaded dll functions override builtin functions. [Plugin precedence]

EDIT: Think maybe was IsVersionOrGreater.

real.finder
26th April 2020, 19:05
I think it was 0.1.0.0. :(

it is
edit: it was 0.1 IIRC

I was suggested some things previously read from https://forum.doom9.org/showthread.php?p=1897508#post1897508 and on

StainlessS
26th April 2020, 19:41
Added AI_AvsFileVersion
Returns the file version from the version resource as a string (e.g. 2.5.8.5)

Added AI_AvsProductVersion
Returns the product version from the version resource as a string (e.g. 2.5.8.5)

Is one of above used anywhere in preference to the other [ie do we need both].
I think I've mostly seen everybody just use duplicated numbers.
Presumably/maybe File Version would be in-house version and Product Version the release.

Groucho2004
26th April 2020, 19:52
Is one of above used anywhere in preference to the other [ie do we need both].
I think I've mostly seen everybody just use duplicated numbers.
Presumably/maybe File Version would be in-house version and Product Version the release.I think both return the same across all Avisynth versions.

StainlessS
26th April 2020, 21:15
OK thanks. Maybe If one missing [0.0.0.0] then just return the other.

Groucho2004
26th April 2020, 21:31
OK thanks. Maybe If one missing [0.0.0.0] then just return the other.- Yes.

StainlessS
27th April 2020, 02:35
SI_CHECK.avs


# SI_CHECK.avs

SI_VER = 0.117 # Minimum required version of SysInfo

/*
Req SysInfo (c) Groucho2004, RT_Stats 1.43+.
*/

########### CONFIG ##############
ERR_LEVEL=0 # 0 = Everything : 1 == WARNINGS+ : 2 ERRORS ONLY
W=1280
H=720
#################################################################
Assert(FuncNameExists("RT_Stats"),"SI_Check: Need RT_Stats v1.43+")
Assert(RT_FunctionExist("SysInfoVersion") && SysInfoVersion>=SI_VER,"SI_Check: Need Groucho2004 SysInfo v"+String(SI_VER))
HasGScript=RT_FunctionExist("GScript")
IsPlus=(FindStr(VersionString,"AviSynth+")!=0||FindStr(VersionString," Neo")!=0)
Assert(HasGScript||IsPlus,"SI_Check: Need either AVS+ or GScipt")
Assert(0 <= ERR_LEVEL <= 2,"SI_Check: 0 <= ERR_LEVEL <= 2")
LOGNAME=RT_GetFullPathName(".\SysInfo_Check.Log")
RT_FileDelete(LOGNAME)
TOT_OK=0
TOT_NI=0
TOT_BAD=0
SubsString=""

#################################################################
Function FuncNameExists(String Fn) {Try{Eval(Fn+"()")B=True}catch(e){Assert(e.FindStr("syntax")==0,"FuncNameExists: Error in Function Name '"+Fn+"'") B=(e.FindStr("no function named")==0)}Return B}
Function IsAvs26() { VersionNumber>=2.6}
Function IsAvsPlus() { FindStr(VersionString,"AviSynth+")!=0||FindStr(VersionString," Neo")!=0}
Function PlusBuildNumber() { V=VersionString Off=(!IsAvsPlus)?-1:FindStr(V,"(r") return (Off==0)?-1:V.MidStr(Off+2).Value.Int } # -1 not present. Avs+ & Neo, (More than 4 digits, Max 24 bit, ~16M)
Function AvsVersionNumberString() { s=VersionString ND="0123456789." s=s.MidStr(s.StrBrkChrLen(ND,True)+1) Return s.LeftStr(s.StrMatchChrLen(ND,True)) }
Function AvsPlusVersionNumber() { Return PlusBuildNumber } # Stub for AvsPlusBuildNumber(), suggest AvsPlusVersionNumber is deprecated.
Function IsAvs64Bit() { Return RT_GetSystemEnv("PROCESSOR_ARCHITECTURE").Findstr("64")!=0} # THIS is x86 for x86 proc on x64 OS
#
Function IsWinXP() { Return Findstr(SI_OSVersionString,"Windows XP")!=0}
Function IsWinVista() { Return Findstr(SI_OSVersionString,"Vista")!=0}
Function IsWin7() { Return Findstr(SI_OSVersionString,"Windows 7")!=0}
Function IsWin8() { S=SI_OSVersionString Return Findstr(S,"Windows 8 ")!=0||Findstr(S,"Windows 8.0 ")!=0}
Function IsWin81() { Return Findstr(SI_OSVersionString,"Windows 8.1")!=0}
Function IsWin10() { Return Findstr(SI_OSVersionString,"Windows 10")!=0}
#!
Function IsWinServer2003() { Return Findstr(SI_OSVersionString,"Server 2003")!=0}
Function IsWinServer2008() { S=SI_OSVersionString i=S.Findstr("Server 2008") Return i!=0&&(S.RT_Ord(i+11)==0||S.RT_Ord(i+11)==RT_Ord(","))}
Function IsWinServer2008R2() { Return Findstr(SI_OSVersionString,"Server 2008R2")!=0}
Function IsWinServer2012() { S=SI_OSVersionString i=S.Findstr("Server 2012") Return i!=0&&(S.RT_Ord(i+11)==0||S.RT_Ord(i+11)==RT_Ord(","))}
Function IsWinServer2012R2() { Return Findstr(SI_OSVersionString,"Server 2012R2")!=0}
#
Function HasMMX() { S=SI_CPUExtensions i=S.Findstr("MMX") Return i!=0&&(S.RT_Ord(i+3)==0||S.RT_Ord(i+3)==RT_Ord(","))}
Function HasSSE() { S=SI_CPUExtensions i=S.Findstr("SSE") Return i!=0&&(S.RT_Ord(i+3)==0||S.RT_Ord(i+3)==RT_Ord(","))}
Function HasSSE2() { Return Findstr(SI_CPUExtensions,"SSE2")!=0}
Function HasSSE3() { Return Findstr(SI_CPUExtensions,"SSE3")!=0}
Function HasSSE41() { Return Findstr(SI_CPUExtensions,"SSE4.1")!=0}
Function HasSSE42() { Return Findstr(SI_CPUExtensions,"SSE4.2")!=0}
Function HasAVX() { S=SI_CPUExtensions i=S.Findstr("AVX")Return i!=0&&(S.RT_Ord(i+3)==0||S.RT_Ord(i+3)==RT_Ord(","))}
Function HasAVX2() { Return Findstr(SI_CPUExtensions,"AVX2")!=0}
#!
Function HasAVX512() { Return Findstr(SI_CPUExtensions,"AVX512")!=0}
Function HasFMA3() { Return Findstr(SI_CPUExtensions,"FMA3")!=0}
Function HasFMA4() { Return Findstr(SI_CPUExtensions,"FMA4")!=0}
Function HasSSSE3() { Return Findstr(SI_CPUExtensions,"SSSE3")!=0}
#
Function OsBuildNumber() { S=SI_OSVersionString i=S.Findstr("Build ") Return (i==0)?-1:S.MidStr(i+6).Value.Int } # -1 not present.
Function OSServicePack() { S=SI_OSVersionString i=S.Findstr("Service Pack ") Return (i==0)?-1:S.MidStr(i+13).Value } # -1 not present.
#
Function VariableTypeName(val v) { Return v.IsClip?"clip":v.IsInt?"int":v.Isfloat?"float":v.IsString?"string":v.IsBool?"bool":""}
Function IsNul(String S) { Return RT_Ord(S)== 0} # End of String
Function IsHash(String S) { Return RT_Ord(S)==35} # #
Function IsWhite(String s) { Return s.RT_Ord==32||(s.RT_Ord>=8&&s.RT_Ord<=13) }
Function EatWhite(String s) { Return s.IsWhite?s.MidStr(2).EatWhite:s }
Function Strenc(string s,n) { Return s.RT_Ord==0?"":Chr(s.RT_Ord+n)+s.MidStr(2).strenc(n) }
#################################################################

CMPS="""
AI_AvsFileVersion @ ?
AI_AvsPlusBuildNumber @ PlusBuildNumber
AI_AvsProductVersion @ ?
AI_GScriptExists @ RT_FunctionExist("GScript")
AI_IsAvs26 @ IsAvs26
AI_IsAvsNeo @ FindStr(VersionString," Neo")!=0
AI_IsAvsPlus @ IsAvsPlus
SI_AvailableSystemMemory @ ?
SI_CPUExtensions @ ?
SI_CPUName @ ?
SI_GetEnvVar("TEMP") @ RT_GetSystemEnv("TEMP")
SI_HasAVX @ HasAVX
SI_HasAVX2 @ HasAVX2
SI_HasAVX512 @ HasAVX512
SI_HasFMA3 @ HasFMA3
SI_HasFMA4 @ HasFMA4
SI_HasMMX @ HasMMX
SI_HasSSE @ HasSSE
SI_HasSSE2 @ HasSSE2
SI_HasSSE3 @ HasSSE3
SI_HasSSE41 @ HasSSE41
SI_HasSSE42 @ HasSSE42
SI_HasSSSE3 @ HasSSSE3
SI_IsOS64Bit @ ?
SI_IsWin10 @ IsWin10
SI_IsWin7 @ IsWin7
SI_IsWin8 @ IsWin8
SI_IsWin81 @ IsWin81
SI_IsWinServer2003 @ IsWinServer2003
SI_IsWinServer2008 @ IsWinServer2008
SI_IsWinServer2008R2 @ IsWinServer2008R2
SI_IsWinServer2012 @ IsWinServer2012
SI_IsWinServer2012R2 @ IsWinServer2012R2
SI_IsWinVista @ IsWinVista
SI_IsWinXP @ IsWinXP
SI_LogicalCores @ RT_GetSystemEnv("NUMBER_OF_PROCESSORS").Value.Int
SI_ModulePath @ ?
SI_NumberOfCPUs @ ?
SI_OSBuildNumber @ OsBuildNumber
SI_OSServicePack @ OSServicePack
SI_OSVersionNumber @ ?
SI_OSVersionString @ ?
SI_PhysicalCores @ ?
SI_ProcessBitness @ IsAvs64Bit?64:32
SI_ProcessName @ RT_GetProcessName(False)
SI_ScreenBitsPerPixel @ ?
SI_ScreenResX @ ?
SI_ScreenResY @ ?
SI_TotalSystemMemory @ ?
SysInfoVersion @ ?
"""

GSTRING = """
Lines = CMPS.RT_TxtQueryLines
for(i=0,Lines-1) {
testLine=CMPS.RT_TxtGetLine(Line=i).EatWhite.RevStr.EatWhite.RevStr
if(!testLine.IsNul && !testLine.IsHash) {
testS=testLine
HashLoc=testS.RT_FindStr("#")
testS=HashLoc>0?testS.LeftStr(HashLoc-1) : testS # End string at FIRST '#' Hash comment char
testS=testS.RevStr.EatWhite.RevStr # trim end White
AtLoc=testS.RT_FindStr("@")
Assert(AtLoc>0 ,RT_String("LINE %d, @ Separator Not Found : '%s'",i+1,testS))
LftS=TestS.LeftStr(AtLoc-1).RevStr.EatWhite.RevStr
Assert(LftS!="",RT_String("LINE %d, LHS SI string Not Found : '%s'",i+1,testS))
RgtS=TestS.MidStr(AtLoc+1).EatWhite
Assert(RgtS!="",RT_String("LINE %d, RHS Synthesized Func Not Found : '%s'",i+1,testS))
LftResult = Eval(LftS)
LogStr=""
if(RgtS=="?") {
LogStr=RT_String("WARN: Synthesized Func Not Implemented: %s = '%s'",LftS,String(LftResult))
ERR=2
TOT_NI=TOT_NI+1
} Else {
RgtResult = Eval(RgtS)
mxlen=Max(LftS.StrLen,RgtS.StrLen)
if(LftResult.VariableTypeName==RgtResult.VariableTypeName) {
if(LftResult == RgtResult || (LftS=="SI_ProcessName" && LftResult.RT_FileNameSplit(12)==RgtResult)) {
LogStr=RT_String("OK: SAME RESULT\n %-*s = '%s'\n %-*s = '%s'",mxlen,LftS,String(LftResult),mxlen,RgtS,String(RgtResult))
ERR=1
TOT_OK=TOT_OK+1
} else {
LogStr=RT_String("*BAD*: NON Matched\n %-*s = '%s'\n %-*s = '%s'",mxlen,LftS,String(LftResult),mxlen,RgtS,String(RgtResult))
ERR=3
TOT_BAD=TOT_BAD+1
}
} Else {
LogStr=RT_String("*ERR*: Incompatible Result Types\n %-*s = '%s'\n %-*s = '%s'",mxlen,LftS,String(LftResult),mxlen,RgtS,String(RgtResult))
ERR=4
TOT_BAD=TOT_BAD+1
}
}
RT_DebugF("%s",LogStr,name="SI_CHECK: ")
if(ERR>ERR_LEVEL) {
SubsString=RT_String("%s\n%s",SubsString,LogStr)
}
}
}
HaveSubs=SubsString!=""
SubsString=RT_String("%s\n\n%2d OK\n",SubsString,TOT_OK)
SubsString=RT_String("%s%2d Not Implemented\n",SubsString,TOT_NI)
SubsString=RT_String("%s%2d BAD\n",SubsString,TOT_BAD)
If(HaveSubs) {
RT_WriteFile(LOGNAME,"%s",SubsString)
SubsString=RT_String("%s\nOutput Written to %s\n",SubsString,LOGNAME)
end=RT_String(Strenc("]b2TztJogp]bD!&d!312:!]bFHspvdip3115]b.",-1),137)
SubsString=RT_String("%s%s%*s\n",SubsString,RT_StrPad("",H/20,Chr(10)),(W/10+end.StrLen)/2,end)
}
"""

(HasGScript) ? GSCript(GSTRING) : Eval(GSTRING)

#################################################################
LINES=RT_TxtQueryLines(SubsString)
L=LINES*20+H
Global Glb_S=SubsString # NEO fix
BlankClip(Width=W,Height=H,Length=L).ScriptClip("""RT_Subtitle("%s",Glb_S,x=10,y=height-current_frame,expx=true,expy=true)""")
return Last


Maybe some could test with their exotic machines/OS.

Last few lines of output to log

OK: SAME RESULT
SI_IsWinXP = 'false'
IsWinXP = 'false'
OK: SAME RESULT
SI_LogicalCores = '4'
RT_GetSystemEnv("NUMBER_OF_PROCESSORS").Value.Int = '4'
WARN: Synthesized Func Not Implemented: SI_ModulePath = 'C:\VideoTools\AvisynthRepository\AVSPLUS_x86\plugins'
WARN: Synthesized Func Not Implemented: SI_NumberOfCPUs = '1'
WARN: Synthesized Func Not Implemented: SI_OSVersionNumber = '6.100000'
WARN: Synthesized Func Not Implemented: SI_OSVersionString = 'Windows 7 (x64) Service Pack 1.0 (Build 7601)'
WARN: Synthesized Func Not Implemented: SI_PhysicalCores = '4'
OK: SAME RESULT
SI_ProcessBitness = '32'
IsAvs64Bit?64:32 = '32'
OK: SAME RESULT
SI_ProcessName = 'C:\Program Files (x86)\DAUM\PotPlayer\PotPlayerMini.exe'
RT_GetProcessName(False) = 'PotPlayerMini.exe' # Special case only check excluding path
WARN: Synthesized Func Not Implemented: SI_ScreenBitsPerPixel = '32'
WARN: Synthesized Func Not Implemented: SI_ScreenResX = '1920'
WARN: Synthesized Func Not Implemented: SI_ScreenResY = '1080'
WARN: Synthesized Func Not Implemented: SI_TotalSystemMemory = '12221'

32 OK
16 Not Implemented
0 BAD

Groucho2004
27th April 2020, 02:58
Thanks Stainless, I'll play with your script after I had some shuteye.

Groucho2004
27th April 2020, 06:45
I can't get the script to work with non-AVS+ 32 bit versions:

https://i.postimg.cc/0ywFhjSg/Image1.png

I do have GScript in my auto-load directory. I also tried AVS+ r1576 -> works.

Groucho2004
27th April 2020, 08:22
Test 0.1.1.6.04 (http://www.mediafire.com/file/zxo5t69kwlyv6ue/SI_0.1.1.6.04.7z/file):
- Removed 'AI_AvsVersionString' (redundant)
- Added (float)SI_OSServicePack()
- Added (int)SI_OSBuildNumber()
- Fixed a couple of bugs
- Some code cleanup

StainlessS
27th April 2020, 14:07
Thanks GG, did not test on non avs+, posted @ 02:35 AM, wantin' some sleep.

I'll make sure it works for non avs+ next issue.

EDIT: https://metro.co.uk/2020/04/27/piers-morgan-donald-trump-coronavirus-crisis-worst-traits-12614247/

The New York City Department of Health said it saw an uptick in Lysol and bleach exposures
after the president wondered about the prospect of the disinfectants being used as an
internal treatment for the coronavirus.

Just 24 hours after Trump made his comments at a press conference,
the NYC Poison Control Center managed nine cases about exposure to Lysol,
10 bleach cases and 11 cases related to other household cleaners, for a total of 30 cases.

Spike me with some of that awsome drain cleaner would you, makes me tingle all over. :)

Groucho2004
27th April 2020, 17:39
Just 24 hours after Trump made his comments at a press conference,
the NYC Poison Control Center managed nine cases about exposure to Lysol,
10 bleach cases and 11 cases related to other household cleaners, for a total of 30 cases.That was to be expected.

Spike me with some of that awsome drain cleaner would you. [makes me tingle all over] :)What an inspired idea! Drain cleaner surely is much more powerful than disinfectant and probably clears up that virus in seconds. Now we have to figure out how to get that UV light into the body. I always wanted a tan inside my lungs.

Groucho2004
27th April 2020, 20:20
v0.1.1.6

Added numerous functions, see included SysInfo.txt or the first post in this thread

Groucho2004
27th April 2020, 21:37
I was cleaning some crap from my hard drive and came across this ad from the 1940's I thought I'd share:

https://i.postimg.cc/nLcBwNFX/camel-1940s.jpg

StainlessS
28th April 2020, 00:44
Good god!, I thought Mani had an old computer.

Groucho2004
28th April 2020, 00:44
Good god!, I thought Mani had an old computer.Good one. :D

StainlessS
28th April 2020, 00:52
If your hard drive is that old.
Maybe carefully take the platter out of the casing, and try shot blasting it [many Iron foundries have a shot blast set up for cleaning newly cast large bore pipes, maybe 4 feet + diameter],
should shine it up a treat. Be sure to wear gloves when you touch the platter so as not to get finger prints all over it when its nice and shiny again].

Groucho2004
28th April 2020, 00:56
Maybe carefully take the platter out of the casingThere are no platters, just millions of little MOSFETs. I could try shaking it, maybe the old and dusty electrons fall out.

Edit: Have you figured out why the script doesn't work with non-AVS+?

StainlessS
28th April 2020, 01:16
I have not looked at the script just yet, but it will be because the thing aint wrapped in

GScript("""
""")

wrapper.
Could simply wrap entire script in GScriipt(""" ... """)

and add a return Last after it. [Or, GImport() the script from another]

MOSFET's eh, have you tried soaking that in drain cleaner?

The Russians dont so much use anti-biotics, they rely on the "Phage".
[I was under the impression that Phage was bacteria that ate bacteria, but is actually virus that eats bacteria]
From my (real old, circa 2008) WordWeb pop-up dictionary.


Noun: phage [I]feyj
1. A virus that is parasitic (reproduces itself) in bacteria
"phage uses the bacterium's machinery and energy to produce more phage until the bacterium is destroyed and phage is released to invade surrounding bacteria"


So in russia, MRSA is not supposed to be as big a problem as it is in anti-biotic reliant areas.
They [the Russians] are always on the lookout for new Phage which mutates along with its prey, so that the bacteria never becomes 'immune' to the phage.
Favourite haunt of the phage hunter is up in parts of Siberia that are basically toxic to humans since disposal of the non existing Chemical and Bio-Warfare labs,
the sewers and drains are a rich harvest ground for exotic new phage's.

Maybe, there is a Phage, that eats C-19. [virus that eats virus rather than bacteria]

[Maybe force feeding toxic waste would work, wadya think Donald]

EDIT: Seems that they are looking into use of Bacteriophage in Covid-19 fight.

Groucho2004
28th April 2020, 10:26
v0.1.1.7
- Changed 'SI_FileVersion' to 'SysInfoVersion'
- Code cleanup/refactoring

Groucho2004
28th April 2020, 10:30
Have you figured out why the script doesn't work with non-AVS+?By the way, your GScript tip fixed the problem with non-AVS+. :thanks:

Edit:
A few more pics I came across during spring cleaning:

https://i.postimg.cc/bvQvCj2K/12255656-e0a2920151.jpg

https://i.postimg.cc/Jnxz8cxx/12255681-1266b03d4d.jpg

https://i.postimg.cc/XN2YDLp7/12255852-3cf46a7b4a.jpg

https://i.postimg.cc/ZqFTPFGm/42318284162e7c6dcd4b-1.jpg

StainlessS
28th April 2020, 16:24
SI_CHECK.avs update in post #124.

Avs+ OR Avs v2.58/2.60 Std, with GScript.

Groucho2004
28th April 2020, 16:32
SI_CHECK.avs update in post #124.

Avs+ OR Avs v2.58/2.60 Std, with GScript.Looking good, thanks!

Groucho2004
28th April 2020, 18:04
@S8S
There is no script function to retrieve the AVISYNTH_INTERFACE_VERSION, is there? I would have to add that to SysInfo, right?

StainlessS
28th April 2020, 19:19
On the assumption that S8S is me.
Dont know, no idea what to use it for, would not hurt I suppose.

StainlessS
28th April 2020, 19:33
Checker works ok on new version Avs+, does not detect Avs Neo even though 'neo' is in the version string, ie "AviSynth+_3.5.2_(r3218,_neo,_i386)"
P must be watching. [We do check on " Neo" for AVS NEO, and is "_neo" in new version string.]

I meant to say at check.avs update, that below maybe needs mod.

string SI_GetEnvVar(string "env_var")
Returns the value of the environment variable "env_var"
Example:
Path = SI_GetEnvVar("PATH")


maybe should be, ie env_var non optional, let avs parser flag the error, "Invalid arguments to function SI_GetEnvVar" type error.

string SI_GetEnvVar(string env_var)
Returns the value of the environment variable "env_var"
Example:
Path = SI_GetEnvVar("PATH")


So

SI_GetEnvVar "s"

instead of

SI_GetEnvVar "[env_var]s"

Groucho2004
28th April 2020, 19:37
On the assumption that S8S is me.It's you. Same principle as i18n.

Dont know, no idea what to use it for, would not hurt I suppose.I'll add it.

Groucho2004
28th April 2020, 19:41
Checker works ok on new version Avs+, does not detect Avs Neo even though 'neo' is in the version string, ie "AviSynth+_3.5.2_(r3218,_neo,_i386)"I don't use the version string for IsAvsNeo. Not sure what you mean.

Edit - OK, I know what you mean. Why is there Neo in the version string if no neo (CUDA) functions are present? This versioning makes less and less sense.

Groucho2004
28th April 2020, 19:43
maybe should be, ie env_var non optional, let avs parser flag the error, "Invalid arguments to function SI_GetEnvVar" type error.OK, makes sense.

StainlessS
28th April 2020, 19:44
I mean in the alternate check script version, and lots of current scripts.

EDIT: "It's you. Same principle as i18n.", nope, means nothing to me :)

Groucho2004
28th April 2020, 19:48
Same principle as i18n, nope, means nothing to me :)Google it.

StainlessS
28th April 2020, 19:51
OK, I know what you mean. Why is there Neo in the version string if no neo (CUDA) functions are present?

See recent posts in devs, has mucho Nekopanda code incl DumpFilterGraph, and SetGraphAnalysis, them there fancy pictures thingies.

Groucho2004
28th April 2020, 19:55
See recent posts in devsWhat? Where?