View Single Post
Old 30th July 2019, 16:56   #44  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
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+
__________________
I sometimes post sober.
StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace

"Some infinities are bigger than other infinities", but how many of them are infinitely bigger ???

Last edited by StainlessS; 30th July 2019 at 23:20.
StainlessS is offline   Reply With Quote