Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Capturing and Editing Video > Avisynth Usage
Register FAQ Calendar Today's Posts Search

Reply
 
Thread Tools Search this Thread Display Modes
Old 6th May 2020, 23:40   #241  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
OK, thanks anyway.

EDIT: I guess I can just create another DBase with extra field for Array support flag, and copy current Dbase fields to the new one.
EDIT: Guess I want file byte size too, gonna need do again.
__________________
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; 7th May 2020 at 07:15.
StainlessS is offline   Reply With Quote
Old 7th May 2020, 14:14   #242  |  Link
Groucho2004
 
Join Date: Mar 2006
Location: Barcelona
Posts: 5,034
v0.1.2.4
- Added SI_UserName
- Updated libcpuid
- Refactoring
__________________
Groucho's Avisynth Stuff
Groucho2004 is offline   Reply With Quote
Old 7th May 2020, 17:44   #243  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Thank, you

Little-un in the Tyrol:- https://metro.co.uk/2020/05/07/one-y...alps-12666039/

Make sure to wear the gum shield provided.
__________________
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; 7th May 2020 at 17:47.
StainlessS is offline   Reply With Quote
Old 7th May 2020, 17:53   #244  |  Link
Groucho2004
 
Join Date: Mar 2006
Location: Barcelona
Posts: 5,034
Quote:
Originally Posted by StainlessS View Post
Little-un in the Tyrol:- https://metro.co.uk/2020/05/07/one-y...alps-12666039/

Make sure to wear the gum shield provided.
Awesome. The ski outfit in combination with the helmet and the silencer is priceless.

By the way, it's spelled "Tirol".
__________________
Groucho's Avisynth Stuff
Groucho2004 is offline   Reply With Quote
Old 23rd May 2020, 13:27   #245  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Quote:
bool AI_GScriptExists
Returns true if the GScript plugin is loaded
Nope, now gone. [remove it from doc]
__________________
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 ???
StainlessS is offline   Reply With Quote
Old 23rd May 2020, 13:36   #246  |  Link
Groucho2004
 
Join Date: Mar 2006
Location: Barcelona
Posts: 5,034
Quote:
Originally Posted by StainlessS View Post
Nope, now gone. [remove it from doc]
Huh?

Edit - Oh, I see. Will do.
__________________
Groucho's Avisynth Stuff

Last edited by Groucho2004; 23rd May 2020 at 13:39.
Groucho2004 is offline   Reply With Quote
Old 23rd May 2020, 13:44   #247  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
To others, use one of the functions in blue instead of AI_GScriptExists().

Code:
  bool AI_InternalFunctionExists(string "name")
    Returns true if an internal function ("name") is available in the current environment

  bool AI_ExternalFunctionExists(string "name")
    Returns true if an external function ("name") is available in the current environment

  bool AI_FunctionExists(string "name")
    Returns true if an internal or external function ("name") is available in the current environment
eg, AI_FunctionExists("Gscript")

EDIT: or eg
Code:
Function GScriptExists() { Return AI_FunctionExists("Gscript") }
__________________
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; 23rd May 2020 at 13:47.
StainlessS is offline   Reply With Quote
Old 27th May 2020, 20:55   #248  |  Link
Groucho2004
 
Join Date: Mar 2006
Location: Barcelona
Posts: 5,034
v0.1.2.5
- Updated libcpuid
- Fixed a version resource issue
- Updated AVS headers
__________________
Groucho's Avisynth Stuff
Groucho2004 is offline   Reply With Quote
Old 11th August 2020, 15:34   #249  |  Link
Groucho2004
 
Join Date: Mar 2006
Location: Barcelona
Posts: 5,034
v0.1.2.6
- Added SI_GetLogicalDrives()
- Added SI_GetLogicalDriveTotalSize("drive_letter")
- Added SI_GetLogicalDriveFreeSpace("drive_letter")
- Added SI_GetLogicalDriveUsedSpace("drive_letter")

Examples for the new drive functions:

SI_GetLogicalDrives() returns something like this:
'C(OS) E(Main) V(Auxiliary)'

SI_GetLogicalDriveTotalSize("C") returns 131072
SI_GetLogicalDriveFreeSpace("C") returns 114954
SI_GetLogicalDriveUsedSpace("C") returns 16117
__________________
Groucho's Avisynth Stuff

Last edited by Groucho2004; 11th August 2020 at 17:38.
Groucho2004 is offline   Reply With Quote
Old 11th August 2020, 19:34   #250  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Quote:
SI_GetLogicalDriveFreeSpace("C") returns 114954
Does that take into account current user allowed Disk Quota ?

EDIT: https://docs.microsoft.com/en-us/win...ng-disk-quotas

Quote:
The NTFS file system supports disk quotas, which allow administrators to control the amount of data that each user can store on an NTFS file system volume.
Administrators can optionally configure the system to log an event when users are near their quota, and to deny further disk space to users who exceed their quota.
Administrators can also generate reports, and use the event monitor to track quota issues.

You can determine whether a file system supports disk quotas by calling the GetVolumeInformation function and examining the FILE_VOLUME_QUOTAS bit flag.
EDIT:
Some stuff I;ve used before
Code:
int __cdecl QueryFatVolume(const char *relname) {
    // Return:- 1=FAT. 0 = Not FAT. -1 on error;
    int ret = -1;
    char FullPath[_MAX_PATH];
    if(_fullpath(FullPath, relname, _MAX_PATH ) != NULL ) {
        TCHAR RootPathName[_MAX_PATH];
        _splitpath(FullPath,RootPathName, NULL,NULL,NULL );
        char *p=RootPathName;
        while(*p++);
        --p;
        if(p>RootPathName && p[-1] != '\\') {*p++='\\';*p='\0';}
        TCHAR FileSystemNameBuffer[MAX_PATH+1];
        BOOL result = GetVolumeInformation(RootPathName,NULL,0,NULL,NULL,NULL,FileSystemNameBuffer,MAX_PATH+1);
        if(result) {
            ret = (_strnicmp(FileSystemNameBuffer,"FAT",3)==0) ?1:0;        // Just the 1st 3 characters (FAT/FAT32)
        }
    }
    return ret;
}

__int64 __cdecl QueryDiskFreeSpace(const char *relname) {
    __int64 ret = -1;
    char FullPath[_MAX_PATH];
    if(_fullpath(FullPath, relname, _MAX_PATH ) != NULL ) {
        TCHAR RootPathName[_MAX_PATH];
        _splitpath(FullPath,RootPathName, NULL,NULL,NULL );
        char *p=RootPathName;
        while(*p++);
        --p;
        if(p>RootPathName && p[-1] != '\\') {*p++='\\';*p='\0';}
        ULARGE_INTEGER FreeBytesAvailableToCaller;
        ULARGE_INTEGER TotalNumberOfBytes;
        ULARGE_INTEGER TotalNumberOfFreeBytes;
        BOOL result=GetDiskFreeSpaceEx(RootPathName,&FreeBytesAvailableToCaller,&TotalNumberOfBytes,&TotalNumberOfFreeBytes);
        if(result) {
            ret = __int64(FreeBytesAvailableToCaller.QuadPart);
        }
    }
    return ret;
}

__int64 __cdecl QueryMaxFileSize(const char *relname) {
    __int64 ret = -1;
    char FullPath[_MAX_PATH];
    if(_fullpath(FullPath, relname, _MAX_PATH ) != NULL ) {
        TCHAR RootPathName[_MAX_PATH];
        _splitpath(FullPath,RootPathName, NULL,NULL,NULL );
        char *p=RootPathName;
        while(*p++);
        --p;
        if(p>RootPathName && p[-1] != '\\') {*p++='\\';*p='\0';}
        ULARGE_INTEGER FreeBytesAvailableToCaller;
        ULARGE_INTEGER TotalNumberOfBytes;
        ULARGE_INTEGER TotalNumberOfFreeBytes;
        if(GetDiskFreeSpaceEx(RootPathName,&FreeBytesAvailableToCaller,&TotalNumberOfBytes,&TotalNumberOfFreeBytes)) {
            __int64 dfs = __int64(FreeBytesAvailableToCaller.QuadPart) - 0x100000I64;   // minus 1MB
            if(dfs > 0) {
                TCHAR FileSystemNameBuffer[MAX_PATH+1];
                if(GetVolumeInformation(RootPathName,NULL,0,NULL,NULL,NULL,FileSystemNameBuffer,MAX_PATH+1)) {
                    if(_strnicmp(FileSystemNameBuffer,"FAT",3)==0) {    // Just the 1st 3 characters (FAT/FAT32)
                        if(dfs>0xFFF00000i64) dfs = 0xFFF00000i64;      // limit 4GB-1MB on FAT32
                    }
                    ret = dfs;
                }
            }
        }
    }
    return ret;
}
EDIT: Usage in RT
Code:
AVSValue __cdecl RT_DBaseAlloc(AVSValue args, void* user_data, IScriptEnvironment* env) {
    const char * myName = "RT_DBaseAlloc: ";
    const char * fn     = args[0].AsString();
    const int records   = args[1].AsInt();
    const char *typestr = args[2].AsString();
    const int StringlenMax = args[3].AsInt(256);
    if(*fn=='\0')   env->ThrowError("%sEmpty Filename",myName);

    __int64 MaxFileSz = 0xFFFFF00000i64 ;                                               // 1TB - 1MB // RT DBase Limit

    int fatvol = QueryFatVolume(fn);
    if(fatvol < 0)  env->ThrowError("%sCannot query Filesystem",myName);

    __int64 dfs = QueryDiskFreeSpace(fn) - 0x100000;                                    // minus 1MB // Safety
    if(dfs < 0) env->ThrowError("%sCannot query DiskFreeSpace",myName);
    // dprintf("DiskFreeSpace=$%I64X",dfs);
    __int64 maxfs = (fatvol==1)? 0xFFF00000i64 : MaxFileSz;     // limit 4GB on FAT32
    __int64 maxcurdfs=min(maxfs,dfs);       // Max current space, Limit to free space available to user.

 // ...
__________________
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; 11th August 2020 at 19:59.
StainlessS is offline   Reply With Quote
Old 11th August 2020, 20:08   #251  |  Link
Groucho2004
 
Join Date: Mar 2006
Location: Barcelona
Posts: 5,034
Quote:
Originally Posted by StainlessS View Post
Does that take into account current user allowed Disk Quota ?
Don't know. I used the IOCTL APIs (DeviceIoControl(), GetDiskFreeSpaceEx(), GetVolumeInformation(), ...). I'll try to find out more.
__________________
Groucho's Avisynth Stuff

Last edited by Groucho2004; 11th August 2020 at 20:10.
Groucho2004 is offline   Reply With Quote
Old 11th August 2020, 20:20   #252  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Thanks GG, just thought it might be worth mentioning.

(It is quite likely that most non admin users in a domain based network have a quota/limit on disk space EDIT: On a file server, or non admin on non network machine)
__________________
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; 11th August 2020 at 22:09.
StainlessS is offline   Reply With Quote
Old 11th August 2020, 21:41   #253  |  Link
Groucho2004
 
Join Date: Mar 2006
Location: Barcelona
Posts: 5,034
Quote:
Originally Posted by StainlessS View Post
Does that take into account current user allowed Disk Quota ?
OK, I read up on it and since I'm using the "pTotalNumberOfFreeBytes" parameter of GetDiskFreeSpaceEx(), user quota is taken into account as far as I can see.
__________________
Groucho's Avisynth Stuff

Last edited by Groucho2004; 11th August 2020 at 21:50.
Groucho2004 is offline   Reply With Quote
Old 11th August 2020, 21:59   #254  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Thanks GG.
__________________
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 ???
StainlessS is offline   Reply With Quote
Old 9th March 2021, 16:28   #255  |  Link
Groucho2004
 
Join Date: Mar 2006
Location: Barcelona
Posts: 5,034
v0.1.2.8
- Updated libcpuid (Intel Whiskey Lake-U CPUs, AMD Ryzen Cezanne)
- Updated AVS header files
__________________
Groucho's Avisynth Stuff

Last edited by Groucho2004; 31st March 2021 at 18:27.
Groucho2004 is offline   Reply With Quote
Old 31st March 2021, 18:36   #256  |  Link
Groucho2004
 
Join Date: Mar 2006
Location: Barcelona
Posts: 5,034
v0.1.2.9
- Updated libcpuid (Intel Rocket Lake, AMD Ryzen Milan)
__________________
Groucho's Avisynth Stuff
Groucho2004 is offline   Reply With Quote
Old 1st April 2022, 22:00   #257  |  Link
screamingtrees
Registered User
 
Join Date: Oct 2013
Posts: 14
Is there still a download somewhere of the older (1.1.5) version that works with StainlessS' avsinit.avsi? I keep getting the "i don't know what AvsPlusVersionNumber means" error when trying to use Srestore.
screamingtrees is offline   Reply With Quote
Old 1st April 2022, 22:20   #258  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Here is output from my AvsInit on x64, [similar-ish for x86]

Code:
00000157	22:12:54	AvsInit: 	
00000158	22:12:54	AvsInit: Auto load plugins script ENTRY	
00000159	22:12:54	AvsInit: 	
00000160	22:12:54	AvsInit_ShowInfo: 	
00000161	22:12:54	AvsInit_ShowInfo: AvsInit_Version     = 1.10	
00000162	22:12:54	AvsInit_ShowInfo: GScript Available   = AVS+	
00000163	22:12:54	AvsInit_ShowInfo: RT_Stats Version    = 2.00Beta13	
00000164	22:12:54	AvsInit_ShowInfo: SysInfo Version     = 0.129000	
00000165	22:12:54	AvsInit_ShowInfo: SysInfo.dll DIR     = C:\VideoTools\AvisynthRepository\AVSPLUS372_x64\plugins	
00000166	22:12:54	AvsInit_ShowInfo: VersionString       = AviSynth+ 3.7.2 (r3642, master, x86_64)	
00000167	22:12:54	AvsInit_ShowInfo: SetMemoryMax        = 4096	
00000168	22:12:54	AvsInit_ShowInfo: Avisynth Bitness    = 64	
00000169	22:12:54	AvsInit_ShowInfo: WorkingDir          = C:\VideoTools\AvisynthRepository\AVSPLUS372_x64\plugins\	
00000170	22:12:54	AvsInit_ShowInfo: ProcessName         = C:\NON-INSTALL\VDUB\VDUB2\VirtualDub64.exe	
00000171	22:12:54	AvsInit_ShowInfo: ParentProcessName   = explorer.exe	
00000172	22:12:54	AvsInit_ShowInfo: OSVersionString     = Windows 10 (x64) (Build 18363)	
00000173	22:12:54	AvsInit_ShowInfo: OSVersionNumber     = 10.000000	
00000174	22:12:54	AvsInit_ShowInfo: OS Bitness          = 64	
00000175	22:12:54	AvsInit_ShowInfo: CPUName             = Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz / Coffee Lake (Core i7)	
00000176	22:12:54	AvsInit_ShowInfo: Cores               = 06:12 (Phy:Log)	
00000177	22:12:54	AvsInit_ShowInfo: CPU Extensions      = MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, FMA3, RDSEED, ADX, AVX, AVX2	
00000178	22:12:54	AvsInit_ShowInfo: Total Memory        = 32620MB	
00000179	22:12:54	AvsInit_ShowInfo: Avail Memory        = 28436MB'	
00000180	22:12:54	AvsInit_ShowInfo: Screen Res          = 3840x2160	
00000181	22:12:54	AvsInit_ShowInfo: Screen BitsPerPixel = 32	
00000182	22:12:54	AvsInit_ShowInfo: Time                = Friday 01 April 2022 22:12:54[GMT Summer Time]	
00000183	22:12:54	AvsInit_ShowInfo: User TEMP Dir       = C:\Users\steve\AppData\Local\Temp	
00000184	22:12:54	AvsInit_ShowInfo: ComSpec             = C:\Windows\system32\cmd.exe	
00000185	22:12:54	AvsInit_ShowInfo: Computer Name       = OMEN-W10P5	
00000186	22:12:54	AvsInit_ShowInfo: User Name           = steve
Get DebugView here if you dont have it.
https://docs.microsoft.com/en-us/sys...oads/debugview

EDIT:
And a little bit of AvsInit.avsi v1.10
Code:
Function SystemInfoVersion()        { try{v=SysInfoVersion}catch(msg){v=-1.0} return v }   # v = -1.0, SysInfo not installed
Function RT_StatsVersion()          { try{v=RT_Version}catch(msg){v=-1.0} return v }       # v = -1.0, RT_Stats not installed
Function GScriptExists()            { Return RT_FunctionExist("GScript") }
Function FuncNameExists(String Fn)  { Return RT_FunctionExist(fn) }
Function IsAvs26()                  { Return AI_IsAvs26 }
Function IsAvsPlus()                { Return AI_IsAvsPlus||FindStr(VersionString," Neo")!=0 }
Function SystemEnvTemp()            { Return SI_GetEnvVar("TEMP") }                 # Path to USER System environment TEMP folder
Function SystemEnvComSpec()         { Return SI_GetEnvVar("COMSPEC") }              # Path to Cmd.exe, eg "C:\Windows\system32\cmd.exe"
Function SystemEnvComputerName()    { Return SI_GetEnvVar("COMPUTERNAME") }         # System environment Commputer Name eg "Colossus"
Function SystemEnvUserName()        { Return SI_GetEnvVar("USERNAME") }             # System environment User Name eg "God".
Function PlusBuildNumber()          { Return AI_AvsPlusBuildNumber }
Function AvsPlusVersionNumber()     { Return AI_AvsPlusBuildNumber }                # Suggest Deprecated. Same as PlusBuildNumber
Function IsAvsNeo()                 { Return FindStr(VersionString," Neo")!=0}      # Suggest Deprecated.
If DebugView outputs nothing like above, then AvsInit.avsi may not be working ... or something ???
__________________
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; 1st April 2022 at 22:30.
StainlessS is offline   Reply With Quote
Old 1st April 2022, 23:20   #259  |  Link
screamingtrees
Registered User
 
Join Date: Oct 2013
Posts: 14
How do I load the script into DebugView?
screamingtrees is offline   Reply With Quote
Old 1st April 2022, 23:34   #260  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Just run debugview in background,
open any avs script in eg vdub2.

EDIT:
Well any script that uses any external plugin.
eg

Code:
BlankClip.RT_subtitle("Hello World")
__________________
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; 1st April 2022 at 23:47.
StainlessS is offline   Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 16:28.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.