HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
|
Here script to auto load plugins via an avsi.
Also, has facility to autoload GScript style scripts using GImport() when not AVS+, and just Import when AVS+.
GScripts Directory GIMPORT in Plugins, should have all GScript(""" ... """) style wrappers REMOVED from them.
Allows using same startup/loader on avs 2.6 standard, avs+ x86 and x64.
InitExternalPlugins.avsi
Code:
# InitExternalPlugins.avsi
# SetMemoryMax(512) # whatever
# Uses RT_Stats, SysInfo32(or SysInfo64) dlls, and maybe GScript.
RT_DebugF("DBGVIEWCLEAR\n\nAuto load plugins script ENTRY\n",name="InitExternalPlugins: ") # 'DBGVIEWCLEAR' sent to Debugview window clears the window. (thanx Wonkey)
Function ShowAvsInitInfo() {
myName="InitExternalPlugins:ShowAvsInitInfo: "
S=RT_String("\nVersionString = '%s'\n", VersionString)
S=RT_String("%sAvisynth Bitness = %d\n", S,SI_ProcessBitness)
S=RT_String("%sProcessName = '%s'\n", S,SI_ProcessName)
S=RT_String("%sOSVersionString = '%s'\n", S,SI_OSVersionString)
S=RT_String("%sOSVersionNumber = %f\n", S,SI_OSVersionNumber)
S=RT_String("%sCPUName = '%s'\n", S,SI_CPUName)
S=RT_String("%sCores = %02d:%02d (Phy:Log)\n", S,SI_PhysicalCores,SI_LogicalCores)
S=RT_String("%sCPU Extensions = '%s'\n", S,SI_CPUExtensions)
S=RT_String("%sTotal Memory = %dMB\n", S,SI_TotalSystemMemory)
S=RT_String("%sAvail Memory = %dMB'\n", S,SI_AvailableSystemMemory)
S=RT_String("%sScreen Res = %dx%d\n", S,SI_ScreenResX,SI_ScreenResY)
S=RT_String("%sScreen BitPerPixel = %d\n", S,SI_ScreenBitsPerPixel)
S=RT_String("%sTime = '%s'\n", S,Time("%A %d %B %Y %H:%M:%S[%Z]"))
S=RT_String("%sSetMemoryMax = %d\n", S,SetMemoryMax)
RT_DebugF("%s",S,name=myName)
}
Function AvsInit_Load_CPP_Plugin(String fn) {
myName = "InitExternalPlugins:AvsInit_Load_CPP_Plugin: "
Assert(fn != "", +RT_String("%sFn cannot be empty string",myName))
FN = RT_GetFullPathName(fn)
EX = Exist(FN)
Try {
EX ? LoadPlugin(FN) : NOP
EX ? RT_DebugF("%s LOADED OK",RT_FilenameSplit(FN,12).RT_StrPad(32),name=myName) : RT_DebugF("%s NOT FOUND",FN,name=myName)
} catch( msg ) { RT_DebugF("ERROR on '%s'\nSysErr='%s'\n",FN,msg,name=myName) }
}
Function AvsInit_Load_C_Plugin(String fn) {
myName = "InitExternalPlugins:AvsInit_Load_C_Plugin: "
Assert(fn != "", +RT_String("%sFn cannot be empty string",myName))
FN = RT_GetFullPathName(fn)
EX = Exist(FN)
Try {
EX ? Load_Stdcall_Plugin(FN) : NOP
EX ? RT_DebugF("%s LOADED OK",RT_FilenameSplit(FN,12).RT_StrPad(32),name=myName) : RT_DebugF("%s NOT FOUND",FN,name=myName)
} catch( msg ) {
RT_DebugF("ERROR on '%s'\nSysErr='%s'\n",Fn,msg,name=myName)
}
}
Function AvsInit_Import_Avs(String fn) {
myName = "InitExternalPlugins:AvsInit_Import_Avs: "
Assert(fn != "", +RT_String("%sFn cannot be empty string",myName))
FN = RT_GetFullPathName(fn)
EX = Exist(FN)
Try {
EX ? Import(FN) : NOP
EX ? RT_DebugF(" %s IMPORTED OK",RT_FilenameSplit(FN,12).RT_StrPad(32),name=myName) : RT_DebugF("%s NOT FOUND",FN,name=myName)
} catch( msg ) { RT_DebugF("ERROR on '%s'\nSysErr='%s'\n",FN,msg,name=myName) }
}
Function AvsInit_GImport(String dir) { # Import if AVS+, or GImport if NOT AVS+ and GScript present. Import of both *.avs and *.avsi
myName = "InitExternalPlugins:AvsInit_GImport: "
Got=0
IsAvsPlus=(FindStr(VersionString, "AviSynth+")>0 || FindStr(VersionString, " Neo")>0) # EDIT: Added Avisynth Neo
HasGScript=RT_FunctionExist("GScript")
Assert(IsAvsPlus || HasGScript,RT_String("%sMust have Avs+ or GScript",myName))
Assert(dir != "", +RT_String("%sdir cannot be empty string",myName))
Dir = RT_GetFullPathName(Dir)
TEMP=RT_GetSystemEnv("TEMP") + "\~" + RT_LocalTimeString + ".tmp"
nwr = RT_WriteFileList(Dir+"\*.avs|avsi",TEMP)
GS="""
if(nwr > 0) {
for(i=0,nwr-1) {
fn = RT_ReadTxtFromFile(TEMP,Lines=1,Start=i)
fn = RT_TxtGetLine(fn) # Strip NL
try {
if(HasGScript) {
RT_DebugF("GImporting ... %s",fn,name=myName)
GImport(fn)
} Else {
RT_DebugF("Importing ... %s",fn,name=myName)
Import(fn)
}
got=got+1
} catch ( msg ) { RT_DebugF(" *** Catch *** %s",msg,name=myName) }
}
}
"""
(HasGScript) ? GSCript(GS) : Eval(GS)
RT_FileDelete(TEMP)
RT_DebugF(" IMPORTED %d scripts",got,name=myName)
}
##################
ShowAvsInitInfo()
AvsInit_Load_CPP_Plugin (".\DGDecode\DGDecode.DLL") # DGDecode CPP
AvsInit_Load_C_Plugin (".\FFMS2_C\ffms2.dll") # FFMpegSource C Plugin
AvsInit_Import_Avs (".\FFMS2_C\ffms2.avsi") # FFMpegSource C Avsi file with LoadCPlugin line commented OUT.
AvsInit_Load_CPP_Plugin (".\LSMASH_CPP\LSMASHSource.dll") # L-Smash CPP
#AvsInit_Load_CPP_Plugin (".\FFMS2000_CPP\ffms2.dll") # FFMpegSource CPP Plugin
#AvsInit_Import_Avs (".\FFMS2000_CPP\ffms2.avsi") # FFMpegSource CPP Avsi file with LoadCPlugin line commented OUT.
### Below Scripts should NOT have GScript wrappers ie no GScript(""" ... """). Import() scripts for AVS+, and GImport() when GScript installed.
AvsInit_GImport(".\GIMPORT") # GIMPORT foldler inside your Plugins directory.
#AvsInit_GImport("..\..\GIMPORT") # 2 Directories ABOVE plugins, if using Groucho2004 Universal installer, then is in AvisynthRepository smame level as all AVS distro folders.
EDIT: Debug
Code:
00000030 18:50:48.623 InitExternalPlugins:
00000031 18:50:48.623 InitExternalPlugins: Auto load plugins script ENTRY
00000032 18:50:48.623 InitExternalPlugins:
00000033 18:50:48.623 InitExternalPlugins:ShowAvsInitInfo:
00000034 18:50:48.623 InitExternalPlugins:ShowAvsInitInfo: VersionString = 'AviSynth+ 0.1 (r2900, MT, i386)'
00000035 18:50:48.623 InitExternalPlugins:ShowAvsInitInfo: Avisynth Bitness = 32
00000036 18:50:48.623 InitExternalPlugins:ShowAvsInitInfo: ProcessName = 'C:\NON-INSTALL\VDUB\VDUB2\VirtualDub.exe'
00000037 18:50:48.623 InitExternalPlugins:ShowAvsInitInfo: OSVersionString = 'Windows 7 (x64) Service Pack 1.0 (Build 7601)'
00000038 18:50:48.623 InitExternalPlugins:ShowAvsInitInfo: OSVersionNumber = 6.100000
00000039 18:50:48.623 InitExternalPlugins:ShowAvsInitInfo: CPUName = 'Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz / Yorkfield (Core 2 Quad) 6M'
00000040 18:50:48.623 InitExternalPlugins:ShowAvsInitInfo: Cores = 04:04 (Phy:Log)
00000041 18:50:48.623 InitExternalPlugins:ShowAvsInitInfo: CPU Extensions = 'MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1'
00000042 18:50:48.623 InitExternalPlugins:ShowAvsInitInfo: Total Memory = 12221MB
00000043 18:50:48.623 InitExternalPlugins:ShowAvsInitInfo: Avail Memory = 10230MB'
00000044 18:50:48.623 InitExternalPlugins:ShowAvsInitInfo: Screen Res = 1920x1080
00000045 18:50:48.623 InitExternalPlugins:ShowAvsInitInfo: Screen BitPerPixel = 32
00000046 18:50:48.623 InitExternalPlugins:ShowAvsInitInfo: Time = 'Tuesday 30 July 2019 18:50:48[GMT Daylight Time]'
00000047 18:50:48.623 InitExternalPlugins:ShowAvsInitInfo: SetMemoryMax = 1024
00000048 18:50:48.623 InitExternalPlugins:ShowAvsInitInfo:
00000049 18:50:48.623 InitExternalPlugins:AvsInit_Load_CPP_Plugin: DGDecode.DLL LOADED OK
00000050 18:50:48.623 InitExternalPlugins:AvsInit_Load_C_Plugin: ffms2.dll LOADED OK
00000051 18:50:48.623 InitExternalPlugins:AvsInit_Import_Avs: ffms2.avsi IMPORTED OK
00000052 18:50:48.623 InitExternalPlugins:AvsInit_Load_CPP_Plugin: LSMASHSource.dll LOADED OK
00000053 18:50:48.639 InitExternalPlugins:AvsInit_GImport: Importing ... C:\VideoTools\AvisynthRepository\AVSPLUS_x86\plugins\GIMPORT\MIFO_Library.avsi
00000054 18:50:48.639 InitExternalPlugins:AvsInit_GImport: IMPORTED 1 scripts
OOps, line in red changed
EDIT: Added AviSynth Neo as avs+
Last edited by StainlessS; 30th July 2019 at 23:20.
|