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

Reply
 
Thread Tools Search this Thread Display Modes
Old 16th January 2023, 23:42   #221  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Also note, a function with a Float arg will accept an int [v2.60+, converted to type float inside the function],
but a function with a type Int arg will NOT accept a float.

A type float arg specifier basically means 'numeric' whereas type Int is strictly int.
__________________
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; 19th January 2023 at 16:23.
StainlessS is offline   Reply With Quote
Old 17th January 2023, 19:57   #222  |  Link
LeXXuz
21 years and counting...
 
LeXXuz's Avatar
 
Join Date: Oct 2002
Location: Germany
Posts: 716
Thanks StainlessS. Appreciate your input.
LeXXuz is offline   Reply With Quote
Old 18th January 2023, 13:22   #223  |  Link
GAP
Registered User
 
Join Date: Sep 2020
Posts: 135
Edit: Nevermind, Disregard that qusstion as it turned out that Avisynth + and Avisynth wer ein conflict with each other. I was using AVSPmod and it does not detect AVISynth +. My next questions are: How do I make AVSPMod use AVISynth +? And can AVSPmod be a substitute for Virtualdub2? I used the Universal Installer but I installed the latest version of AVISynth + but I am afraid to use it.

Last edited by GAP; 18th January 2023 at 14:06.
GAP is offline   Reply With Quote
Old 18th January 2023, 23:26   #224  |  Link
Emulgator
Big Bit Savings Now !
 
Emulgator's Avatar
 
Join Date: Feb 2007
Location: close to the wall
Posts: 1,531
Modify the Universal Groucho setavs.cmd to

Code:
::Batch script for fast switching of Avisynth versions
::Initial idea and work by Groucho2004
::Modified by jones1913
::Modified and extended by Groucho2004
::Updated for AVSPLUS373 folders by Emulgator

@echo off
cls
setlocal

:Check administrative privileges
fsutil dirty query %systemdrive% > nul
if errorlevel 1 goto :noAdmin


::  ########################## Start Configuration #########################

::   The variable "AVS_SRC_DIR" must be set according to the location of
::   this batch file.

::   The simplest way to have this up and running is to copy the "AvisynthRepository"
::   directory to a location of your choice (avoid "Program Files" or "Program Files (x86)")
::   and create a shortcut to the "setavs.cmd" batch file in the root of "AvisynthRepository".

::   If you want to run the batch file from a different directory
::   (i.e. a directory to which the "PATH" environment variable points),
::   remove the "%~dp0" and use a fully qualified path to the source directory.
::   Example: "set AVS_SRC_DIR=E:\VideoTools\AvisynthRepository"
set AVS_SRC_DIR=%~dp0


::   Default plugin directories
::   If you leave them blank, the respective "plugin" directories within
::   the "AvisynthRepository" source directories will be used.
set PLUGDIR32=
set PLUGDIR64=


::   Additional plugin directories (works only with Avisynth+)
::   If you leave them blank, only the default plugin directories (see above)
::   will be used.
set PLUGDIR32PLUS=
set PLUGDIR64PLUS=


::  **IMPORTANT:
::  If you have customized any of the above directories and their names contain
::  special characters such as '&', '(' or ')', enclose the variable and path
::  in double quotes and use the escape character '^' before the special character(s).
::  
::  Example 1:
::  set "AVS_SRC_DIR=C:\Program Files ^(x86^)\Avisynth"
::  
::  Example 2:
::  set "PLUGDIR32=C:\Program Files ^(x86^)\Avisynth\Plugins ^& avsi"


::  ########################### End Configuration ##########################



if "%AVS_SRC_DIR%" == "" (
  echo.
  echo The source directory ^(AVS_SRC_DIR^) is not defined.
  echo Please read the instructions above.
  echo.
  goto :end
)

if /i %PROCESSOR_ARCHITECTURE%==x86 if not defined PROCESSOR_ARCHITEW6432 set winarch=x32

:: Remove trailing backslash if present
if "%AVS_SRC_DIR:~-1%"=="\" SET AVS_SRC_DIR=%AVS_SRC_DIR:~0,-1%

echo.
echo  Installed Avisynth version(s):
echo.
if defined winarch (
	"%AVS_SRC_DIR%\Tools\AVSVersion32.exe"
) else (
	"%AVS_SRC_DIR%\Tools\AVSVersion32.exe"
	echo.
	"%AVS_SRC_DIR%\Tools\AVSVersion64.exe"
)
echo.

echo.
echo  Select the Avisynth version you want to install/uninstall:
echo.
echo    1 = Avisynth      2.5.8
echo    2 = Avisynth      2.6.0
echo    3 = Avisynth      2.6.1 (Alpha)
echo    4 = Avisynth      2.6.0 (SEt's multi-threaded build)
echo.

echo    5 = Avisynth+     0.1.0 (x86, r2772)
echo    6 = Avisynth+     0.1.0 (x64, r2772)
echo    7 = Avisynth+ XP  3.7.0 (x86, r3382)
echo    8 = Avisynth+ XP  3.7.0 (x64, r3382)
echo    9 = Avisynth+     3.7.3 (x86, r3825)
echo   10 = Avisynth+     3.7.3 (x64, r3825)

echo.
echo   13 = Uninstall Avisynth x86
echo   14 = Uninstall Avisynth x64
echo.
echo   NOTE: 64 bit versions can be installed alongside 32 bit versions.
echo.
echo.
set no=
set /p no=  [1-12] (leave blank and [Enter] to exit): 
if [%no%]==[] goto :cancel


if %no%==1 set avs=AVS258
if %no%==2 set avs=AVS260
if %no%==3 set avs=AVS261_Alpha
if %no%==4 set avs=AVS260_MT

if %no%==5  (set avs=AVSPLUS010_x86) & set avspl=true
if %no%==6  (set avs=AVSPLUS010_x64) & set avspl=true
if %no%==7  (set avs=AVSPLUS370_x86_XP) & set avspl=true
if %no%==8  (set avs=AVSPLUS370_x64_XP) & set avspl=true
if %no%==9  (set avs=AVSPLUS373_x86) & set avspl=true
if %no%==10 (set avs=AVSPLUS373_x64) & set avspl=true


if %no%==13 (set avs=AVSx86) & goto :uninstall
if %no%==14 (set avs=AVSx64) & goto :uninstall
echo.
if [%avs%]==[] (echo Invalid input...
	goto :menu)

if %avs%==AVSPLUS010_x64 set x64=true
if %avs%==AVSPLUS370_x64 set x64=true
if %avs%==AVSPLUS370_x64_XP set x64=true
if %avs%==AVSPLUS373_x64 set x64=true

:install

:: Remove trailing backslash if present
if "%AVS_SRC_DIR:~-1%"=="\" SET AVS_SRC_DIR=%AVS_SRC_DIR:~0,-1%

if "%PLUGDIR32%" == "" (
  set REGPLUGDIR32=%AVS_SRC_DIR%\%avs%\plugins
) else (
  set REGPLUGDIR32=%PLUGDIR32%
)

if "%PLUGDIR64%" == "" (
  set REGPLUGDIR64=%AVS_SRC_DIR%\%avs%\plugins
) else (
  set REGPLUGDIR64=%PLUGDIR64%
)

if "%PLUGDIR32PLUS%" == "" (
  set REGPLUGDIR32PLUS=%AVS_SRC_DIR%\%avs%\plugins
) else (
  set REGPLUGDIR32PLUS=%PLUGDIR32PLUS%
)

if "%PLUGDIR64PLUS%" == "" (
  set REGPLUGDIR64PLUS=%AVS_SRC_DIR%\%avs%\plugins
) else (
  set REGPLUGDIR64PLUS=%PLUGDIR64PLUS%
)

:: Remove trailing backslash if present
if "%REGPLUGDIR32PLUS:~-1%"=="\" SET REGPLUGDIR32PLUS=%REGPLUGDIR32PLUS:~0,-1%
if "%REGPLUGDIR64PLUS:~-1%"=="\" SET REGPLUGDIR64PLUS=%REGPLUGDIR64PLUS:~0,-1%
if "%REGPLUGDIR32:~-1%"=="\" SET REGPLUGDIR32=%REGPLUGDIR32:~0,-1%
if "%REGPLUGDIR64:~-1%"=="\" SET REGPLUGDIR64=%REGPLUGDIR64:~0,-1%

echo Installing %avs%...
echo.
if defined winarch (
	echo setup for 32bit windows system...
	echo.

	if defined x64 ( echo Attempt to install x64 AVS on x32 Windows.
		goto :cancel )

	echo copying %avs% files to "%WINDIR%\System32"...
	copy /y "%AVS_SRC_DIR%\%avs%\avisynth.dll" "%WINDIR%\System32"
	copy /y "%AVS_SRC_DIR%\%avs%\devil.dll" "%WINDIR%\System32"
	if errorlevel 1 ( echo Failed to copy files to "%WINDIR%\System32"
		goto :error )
	echo.
	echo Writing "HKLM\SOFTWARE\Avisynth" /v "" /d "%AVS_SRC_DIR%\%avs%"
	reg add "HKLM\SOFTWARE\Avisynth" /v "" /d "%AVS_SRC_DIR%\%avs%" /f
	echo.

	echo Writing "HKLM\SOFTWARE\Avisynth" /v "PluginDir2_5" /d "%REGPLUGDIR32%"
	reg add "HKLM\SOFTWARE\Avisynth" /v "PluginDir2_5" /d "%REGPLUGDIR32%" /f
	if errorlevel 1 ( echo Error on importing registry keys!
		goto :error )

	if "%REGPLUGDIR32PLUS%" GTR "" (
		echo.
		echo Writing "HKLM\SOFTWARE\Avisynth" /v "PluginDir+" /d "%REGPLUGDIR32PLUS%"
		reg add "HKLM\SOFTWARE\Avisynth" /v "PluginDir+" /d "%REGPLUGDIR32PLUS%" /f
		if errorlevel 1 ( echo Error on importing registry keys!
			goto :error )
	)

	call :regWin
) else (
	echo setup for 64bit windows system...
	echo.
	if defined x64 (
		echo copying %avs% files to "%WINDIR%\System32"...
		copy /y "%AVS_SRC_DIR%\%avs%\avisynth.dll" "%WINDIR%\System32"
		copy /y "%AVS_SRC_DIR%\%avs%\devil.dll" "%WINDIR%\System32"
		if errorlevel 1 ( echo Failed to copy files to "%WINDIR%\System32"
			goto :error )
		echo.
		echo Writing "HKLM\SOFTWARE\Avisynth" /v "" /d "%AVS_SRC_DIR%\%avs%"
		reg add "HKLM\SOFTWARE\Avisynth" /v "" /d "%AVS_SRC_DIR%\%avs%" /f
		echo.

		echo Writing "HKLM\SOFTWARE\Avisynth" /v "PluginDir2_5" /d "%REGPLUGDIR64%"
		reg add "HKLM\SOFTWARE\Avisynth" /v "PluginDir2_5" /d "%REGPLUGDIR64%" /f
		if errorlevel 1 ( echo Error on importing registry keys!
			goto :error )

		if "%REGPLUGDIR64PLUS%" GTR "" (
			echo.
			echo Writing "HKLM\SOFTWARE\Avisynth" /v "PluginDir+" /d "%REGPLUGDIR64PLUS%"
			reg add "HKLM\SOFTWARE\Avisynth" /v "PluginDir+" /d "%REGPLUGDIR64PLUS%" /f
			if errorlevel 1 ( echo Error on importing registry keys!
				goto :error )
		)

		call :regWin
	) else (
		echo copying %avs% files to "%WINDIR%\SysWow64"...
		echo copy /y "%AVS_SRC_DIR%\%avs%\avisynth.dll" "%WINDIR%\SysWow64"
		copy /y "%AVS_SRC_DIR%\%avs%\avisynth.dll" "%WINDIR%\SysWow64"
		copy /y "%AVS_SRC_DIR%\%avs%\devil.dll" "%WINDIR%\SysWow64"
		if errorlevel 1 ( echo Failed to copy files to "%WINDIR%\SysWow64"
			goto :error )
		echo.
		echo Writing "HKLM\SOFTWARE\Wow6432Node\Avisynth" /v "" /d "%AVS_SRC_DIR%\%avs%"
		reg add "HKLM\SOFTWARE\Wow6432Node\Avisynth" /v "" /d "%AVS_SRC_DIR%\%avs%" /f
		echo.

		echo Writing "HKLM\SOFTWARE\Wow6432Node\Avisynth" /v "PluginDir2_5" /d "%REGPLUGDIR32%"
		reg add "HKLM\SOFTWARE\Wow6432Node\Avisynth" /v "PluginDir2_5" /d "%REGPLUGDIR32%" /f
		if errorlevel 1 ( echo Error on importing registry keys!
			goto :error )

		if "%REGPLUGDIR32PLUS%" GTR "" (
			echo.
			echo Writing "HKLM\SOFTWARE\Wow6432Node\Avisynth" /v "PluginDir+" /d "%REGPLUGDIR32PLUS%"
			reg add "HKLM\SOFTWARE\Wow6432Node\Avisynth" /v "PluginDir+" /d "%REGPLUGDIR32PLUS%" /f
			if errorlevel 1 ( echo Error on importing registry keys!
				goto :error )
		)

		call :regWow64
	)
)
goto :end

:regWin
echo.
echo adding more registry entries...
reg add "HKLM\SOFTWARE\Classes\AVIFile\Extensions\AVS" /ve /d "{E6D6B700-124D-11D4-86F3-DB80AFD98778}" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\CLSID\{E6D6B700-124D-11D4-86F3-DB80AFD98778}" /ve /d "AviSynth" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\CLSID\{E6D6B700-124D-11D4-86F3-DB80AFD98778}\InProcServer32" /ve /d "AviSynth.dll" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\CLSID\{E6D6B700-124D-11D4-86F3-DB80AFD98778}\InProcServer32" /v "ThreadingModel" /d "Apartment" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\Media Type\Extensions\.avs" /v "Source Filter" /d "{D3588AB0-0781-11CE-B03A-0020AF0BA770}" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\.avs" /ve /d "avsfile" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\.avsi" /ve /d "avs_auto_file" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\avsfile" /ve /d "AviSynth Script" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\avsfile\DefaultIcon" /ve /d "%WINDIR%\System32\AviSynth.dll,0" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\avs_auto_file" /ve /d "AviSynth Autoload Script" /f >nul 2>&1
if defined avspl (reg add "HKLM\SOFTWARE\Classes\avs_auto_file\DefaultIcon" /ve  /d "%WINDIR%\System32\AviSynth.dll,1" /f
	) else reg add "HKLM\SOFTWARE\Classes\avs_auto_file\DefaultIcon" /ve /d "%WINDIR%\System32\AviSynth.dll,0" /f
goto :eof

:regWow64
echo.
echo adding more registry entries (wow64 mode)...
reg add "HKLM\SOFTWARE\Classes\AVIFile\Extensions\AVS" /ve /d "{E6D6B700-124D-11D4-86F3-DB80AFD98778}" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Wow6432Node\Classes\CLSID\{E6D6B700-124D-11D4-86F3-DB80AFD98778}" /ve /d "AviSynth" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Wow6432Node\Classes\CLSID\{E6D6B700-124D-11D4-86F3-DB80AFD98778}\InProcServer32" /ve /d "AviSynth.dll" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Wow6432Node\Classes\CLSID\{E6D6B700-124D-11D4-86F3-DB80AFD98778}\InProcServer32" /v "ThreadingModel" /d "Apartment" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Wow6432Node\Classes\Media Type\Extensions\.avs" /v "Source Filter" /d "{D3588AB0-0781-11CE-B03A-0020AF0BA770}" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\.avs" /ve /d "avsfile" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\.avsi" /ve /d "avs_auto_file" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\avsfile" /ve /d "AviSynth Script" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\avsfile\DefaultIcon" /ve /d "%WINDIR%\SysWow64\AviSynth.dll,0" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\avs_auto_file" /ve /d "AviSynth Autoload Script" /f >nul 2>&1
if defined avspl (reg add "HKLM\SOFTWARE\Classes\avs_auto_file\DefaultIcon" /ve /d "%WINDIR%\SysWow64\AviSynth.dll,1" /f
	) else reg add "HKLM\SOFTWARE\Classes\avs_auto_file\DefaultIcon" /ve /d "%WINDIR%\SysWow64\AviSynth.dll,0" /f
goto :eof

:uninstall
echo.
echo Remove %avs% .dll and registry entries from this system?
set /p rm=[y/n]: 
if /i not [%rm%]==[y] goto :cancel
echo.
if defined winarch (
	if /i %avs%==AVSx64 ( echo Attempt to remove x64 AVS from x32 Windows.
		goto :cancel )
	echo removing %avs% files from "%WINDIR%\System32"...
	del "%WINDIR%\System32\avisynth.dll"
	del "%WINDIR%\System32\devil.dll"
	call :unregWin all
) else (
	if /i %avs%==AVSx64 (
		echo removing %avs% files from "%WINDIR%\System32"...
		del "%WINDIR%\System32\devil.dll"
		del "%WINDIR%\System32\avisynth.dll"
		if exist "%WINDIR%\SysWow64\avisynth.dll" (call :unregWin) else (
			call :unregWin all )
	) else (
		echo removing %avs% files from "%WINDIR%\SysWow64"...
		del "%WINDIR%\SysWow64\avisynth.dll"
		del "%WINDIR%\SysWow64\devil.dll"
		if exist "%WINDIR%\System32\avisynth.dll" (call :unregWow64) else (
			call :unregWow64 all )
	)
)
goto :end
	
:unregWin
echo.
echo removing registry entries...
reg delete "HKLM\SOFTWARE\Avisynth" /f
reg delete "HKLM\SOFTWARE\Classes\CLSID\{E6D6B700-124D-11D4-86F3-DB80AFD98778}" /f
reg delete "HKLM\SOFTWARE\Classes\Media Type\Extensions\.avs" /f
if [%1]==[all] call :unregAll
goto :eof

:unregWow64
echo.
echo removing registry entries (wow64 mode)...
reg delete "HKLM\SOFTWARE\Wow6432Node\Avisynth" /f
reg delete "HKLM\SOFTWARE\Wow6432Node\Classes\CLSID\{E6D6B700-124D-11D4-86F3-DB80AFD98778}" /f
reg delete "HKLM\SOFTWARE\Wow6432Node\Classes\Media Type\Extensions\.avs" /f
if [%1]==[all] call :unregAll
goto :eof

:unregAll
echo.
echo removing more avs registry entries...
reg delete "HKLM\SOFTWARE\Classes\AVIFile\Extensions\AVS" /f
reg delete "HKLM\SOFTWARE\Classes\.avs" /f
reg delete "HKLM\SOFTWARE\Classes\.avsi" /f
reg delete "HKLM\SOFTWARE\Classes\avsfile" /f
reg delete "HKLM\SOFTWARE\Classes\avs_auto_file" /f
goto :eof

:noAdmin
echo  This batch file must run with elevated privileges, so:
echo.
echo  Right click on it and chose "Run as administrator"
goto :end

:error
echo.
echo something went wrong...
echo.

:cancel
echo.
echo cancelled...
echo.

:end
endlocal
echo.
pause
__________________
"To bypass shortcuts and find suffering...is called QUALity" (Die toten Augen von Friedrichshain)
"Data reduction ? Yep, Sir. We're that issue working on. Synce invntoin uf lingöage..."
Emulgator is offline   Reply With Quote
Old 20th January 2023, 08:03   #225  |  Link
Fjord
Registered User
 
Join Date: Dec 2005
Location: Denmark
Posts: 52
Average an entire clip, return 1 frame

Is there a filter/function/script in Avisynth that will take the average of an entire clip? That is, to create a single frame from a clip, where each pixel in the result frame is the average of all pixels in that position in the clip. The result could be a clip containing 1 frame (ie 32-bit float), or to write the result to a file, fx TIFF in 32-bit float format?

I am only aware of temporal filters that return the average of 3 to 7 frames at a time, for each frame in a clip (TemporalDegrain(), MedianBlurTemporal(), ex_median(), etc.).

The next question will be if this can be done with other statistics, for example maximum, minimum, median?

My objective for this is to create a single-frame mask for a clip that isolates specific areas according to the statistic - for example the areas of an image that are consistently dark for the whole scene. (assuming the clip contains a single scene)
Fjord is offline   Reply With Quote
Old 20th January 2023, 08:09   #226  |  Link
Reel.Deel
Registered User
 
Join Date: Mar 2012
Location: Texas
Posts: 1,664
Quote:
Originally Posted by Fjord View Post
Is there a filter/function/script in Avisynth that will take the average of an entire clip?
ClipBlend:
Code:
#Or to get a single frame average of all frames in a clip:
AviSource("blah.avi")
ClipBlend()
Trim(FrameCount-1,-1)
Float is not supported only 8-bit and 16-bit stacked.
Reel.Deel is offline   Reply With Quote
Old 20th January 2023, 09:04   #227  |  Link
Fjord
Registered User
 
Join Date: Dec 2005
Location: Denmark
Posts: 52
Thanks @Reel.Deel. Spot on!

Given that I have 10-bit source (YUV442P10), I assume I should use source.ConvertToStacked() as input to ClipBlend16(), to use all 10 bits in the process (assuming no overflow in the accumulator). Do I need to convert to YUV444P16 first?

I'll add my vote for HBD support for ClipBlend, and option for running maximum or minimum. Internal 64-bit float accumulator would also be nice.
Fjord is offline   Reply With Quote
Old 20th January 2023, 09:11   #228  |  Link
FranceBB
Broadcast Encoder
 
FranceBB's Avatar
 
Join Date: Nov 2013
Location: Royal Borough of Kensington & Chelsea, UK
Posts: 2,883
Quote:
Originally Posted by Fjord View Post
Thanks @Reel.Deel. Spot on!

Given that I have 10-bit source (YUV442P10), I assume I should use source.ConvertToStacked() as input to ClipBlend16()
Almost, you need ConvertBits(16) first 'cause ConverttoStacked() only accepts 16bit planar as input as it will divide it in 8bit MSB and 8bit LSB.
Using the Reel.Deel example, in your case it would be like:

Code:
#Indexing the 10bit planar source
LWLibavVideoSource("whatever.mov")

#Going to 16bit planar
ConvertBits(16)

#Go to 16bit stacked (MSB and LSB)
ConverttoStacked()

#Work with 16bit stacked precision
ClipBlend16()

#Go back to 16bit planar
ConvertFromStacked()

#Final result with 16bit planar precision
Trim(FrameCount-1,-1)


Quote:
Originally Posted by Fjord View Post
I'll add my vote for HBD support for ClipBlend
Just in case, if/when they'll add 16bit planar support, make sure not to remove 16bit stacked support in the meantime as otherwise it won't be possible for legacy Avisynth versions like 2.6.1 to work in high bit depth and also filters that might depend on it.


Cheers,
Frank
FranceBB is offline   Reply With Quote
Old 20th January 2023, 09:26   #229  |  Link
Fjord
Registered User
 
Join Date: Dec 2005
Location: Denmark
Posts: 52
Thanks Frank! Got it.
Fjord is offline   Reply With Quote
Old 20th January 2023, 09:54   #230  |  Link
Reel.Deel
Registered User
 
Join Date: Mar 2012
Location: Texas
Posts: 1,664
Quote:
Originally Posted by Fjord View Post
I'll add my vote for HBD support for ClipBlend, and option for running maximum or minimum. Internal 64-bit float accumulator would also be nice.
Maybe StainlessS will see this. I've been on the his waiting list for almost 2 yearssS

If you need 32-bit you can do it with expr but you will have to modify the AvgAll_16 script.
Reel.Deel is offline   Reply With Quote
Old 20th January 2023, 10:18   #231  |  Link
kedautinh12
Registered User
 
Join Date: Jan 2018
Posts: 2,153
Waiting for Staindroid
kedautinh12 is offline   Reply With Quote
Old 20th January 2023, 18:31   #232  |  Link
Dogway
Registered User
 
Join Date: Nov 2009
Posts: 2,352
Quote:
Originally Posted by Fjord View Post
Is there a filter/function/script in Avisynth that will take the average of an entire clip?
...
The next question will be if this can be done with other statistics, for example maximum, minimum, median?
That's basically the purpose of SceneStats. Generally it's for scenes, but you can also run ClipStats to get global statistics (min, max, median, mean, etc). ClipStats usually hangs AVS+ though (AvsPmod maybe?).
__________________
i7-4790K@Stock::GTX 1070] AviSynth+ filters and mods on GitHub + Discussion thread
Dogway is offline   Reply With Quote
Old 29th January 2023, 18:51   #233  |  Link
GAP
Registered User
 
Join Date: Sep 2020
Posts: 135
Quote:
Originally Posted by Emulgator View Post
Modify the Universal Groucho setavs.cmd to

Code:
::Batch script for fast switching of Avisynth versions
::Initial idea and work by Groucho2004
::Modified by jones1913
::Modified and extended by Groucho2004
::Updated for AVSPLUS373 folders by Emulgator

@echo off
cls
setlocal

:Check administrative privileges
fsutil dirty query %systemdrive% > nul
if errorlevel 1 goto :noAdmin


::  ########################## Start Configuration #########################

::   The variable "AVS_SRC_DIR" must be set according to the location of
::   this batch file.

::   The simplest way to have this up and running is to copy the "AvisynthRepository"
::   directory to a location of your choice (avoid "Program Files" or "Program Files (x86)")
::   and create a shortcut to the "setavs.cmd" batch file in the root of "AvisynthRepository".

::   If you want to run the batch file from a different directory
::   (i.e. a directory to which the "PATH" environment variable points),
::   remove the "%~dp0" and use a fully qualified path to the source directory.
::   Example: "set AVS_SRC_DIR=E:\VideoTools\AvisynthRepository"
set AVS_SRC_DIR=%~dp0


::   Default plugin directories
::   If you leave them blank, the respective "plugin" directories within
::   the "AvisynthRepository" source directories will be used.
set PLUGDIR32=
set PLUGDIR64=


::   Additional plugin directories (works only with Avisynth+)
::   If you leave them blank, only the default plugin directories (see above)
::   will be used.
set PLUGDIR32PLUS=
set PLUGDIR64PLUS=


::  **IMPORTANT:
::  If you have customized any of the above directories and their names contain
::  special characters such as '&', '(' or ')', enclose the variable and path
::  in double quotes and use the escape character '^' before the special character(s).
::  
::  Example 1:
::  set "AVS_SRC_DIR=C:\Program Files ^(x86^)\Avisynth"
::  
::  Example 2:
::  set "PLUGDIR32=C:\Program Files ^(x86^)\Avisynth\Plugins ^& avsi"


::  ########################### End Configuration ##########################



if "%AVS_SRC_DIR%" == "" (
  echo.
  echo The source directory ^(AVS_SRC_DIR^) is not defined.
  echo Please read the instructions above.
  echo.
  goto :end
)

if /i %PROCESSOR_ARCHITECTURE%==x86 if not defined PROCESSOR_ARCHITEW6432 set winarch=x32

:: Remove trailing backslash if present
if "%AVS_SRC_DIR:~-1%"=="\" SET AVS_SRC_DIR=%AVS_SRC_DIR:~0,-1%

echo.
echo  Installed Avisynth version(s):
echo.
if defined winarch (
	"%AVS_SRC_DIR%\Tools\AVSVersion32.exe"
) else (
	"%AVS_SRC_DIR%\Tools\AVSVersion32.exe"
	echo.
	"%AVS_SRC_DIR%\Tools\AVSVersion64.exe"
)
echo.

echo.
echo  Select the Avisynth version you want to install/uninstall:
echo.
echo    1 = Avisynth      2.5.8
echo    2 = Avisynth      2.6.0
echo    3 = Avisynth      2.6.1 (Alpha)
echo    4 = Avisynth      2.6.0 (SEt's multi-threaded build)
echo.

echo    5 = Avisynth+     0.1.0 (x86, r2772)
echo    6 = Avisynth+     0.1.0 (x64, r2772)
echo    7 = Avisynth+ XP  3.7.0 (x86, r3382)
echo    8 = Avisynth+ XP  3.7.0 (x64, r3382)
echo    9 = Avisynth+     3.7.3 (x86, r3825)
echo   10 = Avisynth+     3.7.3 (x64, r3825)

echo.
echo   13 = Uninstall Avisynth x86
echo   14 = Uninstall Avisynth x64
echo.
echo   NOTE: 64 bit versions can be installed alongside 32 bit versions.
echo.
echo.
set no=
set /p no=  [1-12] (leave blank and [Enter] to exit): 
if [%no%]==[] goto :cancel


if %no%==1 set avs=AVS258
if %no%==2 set avs=AVS260
if %no%==3 set avs=AVS261_Alpha
if %no%==4 set avs=AVS260_MT

if %no%==5  (set avs=AVSPLUS010_x86) & set avspl=true
if %no%==6  (set avs=AVSPLUS010_x64) & set avspl=true
if %no%==7  (set avs=AVSPLUS370_x86_XP) & set avspl=true
if %no%==8  (set avs=AVSPLUS370_x64_XP) & set avspl=true
if %no%==9  (set avs=AVSPLUS373_x86) & set avspl=true
if %no%==10 (set avs=AVSPLUS373_x64) & set avspl=true


if %no%==13 (set avs=AVSx86) & goto :uninstall
if %no%==14 (set avs=AVSx64) & goto :uninstall
echo.
if [%avs%]==[] (echo Invalid input...
	goto :menu)

if %avs%==AVSPLUS010_x64 set x64=true
if %avs%==AVSPLUS370_x64 set x64=true
if %avs%==AVSPLUS370_x64_XP set x64=true
if %avs%==AVSPLUS373_x64 set x64=true

:install

:: Remove trailing backslash if present
if "%AVS_SRC_DIR:~-1%"=="\" SET AVS_SRC_DIR=%AVS_SRC_DIR:~0,-1%

if "%PLUGDIR32%" == "" (
  set REGPLUGDIR32=%AVS_SRC_DIR%\%avs%\plugins
) else (
  set REGPLUGDIR32=%PLUGDIR32%
)

if "%PLUGDIR64%" == "" (
  set REGPLUGDIR64=%AVS_SRC_DIR%\%avs%\plugins
) else (
  set REGPLUGDIR64=%PLUGDIR64%
)

if "%PLUGDIR32PLUS%" == "" (
  set REGPLUGDIR32PLUS=%AVS_SRC_DIR%\%avs%\plugins
) else (
  set REGPLUGDIR32PLUS=%PLUGDIR32PLUS%
)

if "%PLUGDIR64PLUS%" == "" (
  set REGPLUGDIR64PLUS=%AVS_SRC_DIR%\%avs%\plugins
) else (
  set REGPLUGDIR64PLUS=%PLUGDIR64PLUS%
)

:: Remove trailing backslash if present
if "%REGPLUGDIR32PLUS:~-1%"=="\" SET REGPLUGDIR32PLUS=%REGPLUGDIR32PLUS:~0,-1%
if "%REGPLUGDIR64PLUS:~-1%"=="\" SET REGPLUGDIR64PLUS=%REGPLUGDIR64PLUS:~0,-1%
if "%REGPLUGDIR32:~-1%"=="\" SET REGPLUGDIR32=%REGPLUGDIR32:~0,-1%
if "%REGPLUGDIR64:~-1%"=="\" SET REGPLUGDIR64=%REGPLUGDIR64:~0,-1%

echo Installing %avs%...
echo.
if defined winarch (
	echo setup for 32bit windows system...
	echo.

	if defined x64 ( echo Attempt to install x64 AVS on x32 Windows.
		goto :cancel )

	echo copying %avs% files to "%WINDIR%\System32"...
	copy /y "%AVS_SRC_DIR%\%avs%\avisynth.dll" "%WINDIR%\System32"
	copy /y "%AVS_SRC_DIR%\%avs%\devil.dll" "%WINDIR%\System32"
	if errorlevel 1 ( echo Failed to copy files to "%WINDIR%\System32"
		goto :error )
	echo.
	echo Writing "HKLM\SOFTWARE\Avisynth" /v "" /d "%AVS_SRC_DIR%\%avs%"
	reg add "HKLM\SOFTWARE\Avisynth" /v "" /d "%AVS_SRC_DIR%\%avs%" /f
	echo.

	echo Writing "HKLM\SOFTWARE\Avisynth" /v "PluginDir2_5" /d "%REGPLUGDIR32%"
	reg add "HKLM\SOFTWARE\Avisynth" /v "PluginDir2_5" /d "%REGPLUGDIR32%" /f
	if errorlevel 1 ( echo Error on importing registry keys!
		goto :error )

	if "%REGPLUGDIR32PLUS%" GTR "" (
		echo.
		echo Writing "HKLM\SOFTWARE\Avisynth" /v "PluginDir+" /d "%REGPLUGDIR32PLUS%"
		reg add "HKLM\SOFTWARE\Avisynth" /v "PluginDir+" /d "%REGPLUGDIR32PLUS%" /f
		if errorlevel 1 ( echo Error on importing registry keys!
			goto :error )
	)

	call :regWin
) else (
	echo setup for 64bit windows system...
	echo.
	if defined x64 (
		echo copying %avs% files to "%WINDIR%\System32"...
		copy /y "%AVS_SRC_DIR%\%avs%\avisynth.dll" "%WINDIR%\System32"
		copy /y "%AVS_SRC_DIR%\%avs%\devil.dll" "%WINDIR%\System32"
		if errorlevel 1 ( echo Failed to copy files to "%WINDIR%\System32"
			goto :error )
		echo.
		echo Writing "HKLM\SOFTWARE\Avisynth" /v "" /d "%AVS_SRC_DIR%\%avs%"
		reg add "HKLM\SOFTWARE\Avisynth" /v "" /d "%AVS_SRC_DIR%\%avs%" /f
		echo.

		echo Writing "HKLM\SOFTWARE\Avisynth" /v "PluginDir2_5" /d "%REGPLUGDIR64%"
		reg add "HKLM\SOFTWARE\Avisynth" /v "PluginDir2_5" /d "%REGPLUGDIR64%" /f
		if errorlevel 1 ( echo Error on importing registry keys!
			goto :error )

		if "%REGPLUGDIR64PLUS%" GTR "" (
			echo.
			echo Writing "HKLM\SOFTWARE\Avisynth" /v "PluginDir+" /d "%REGPLUGDIR64PLUS%"
			reg add "HKLM\SOFTWARE\Avisynth" /v "PluginDir+" /d "%REGPLUGDIR64PLUS%" /f
			if errorlevel 1 ( echo Error on importing registry keys!
				goto :error )
		)

		call :regWin
	) else (
		echo copying %avs% files to "%WINDIR%\SysWow64"...
		echo copy /y "%AVS_SRC_DIR%\%avs%\avisynth.dll" "%WINDIR%\SysWow64"
		copy /y "%AVS_SRC_DIR%\%avs%\avisynth.dll" "%WINDIR%\SysWow64"
		copy /y "%AVS_SRC_DIR%\%avs%\devil.dll" "%WINDIR%\SysWow64"
		if errorlevel 1 ( echo Failed to copy files to "%WINDIR%\SysWow64"
			goto :error )
		echo.
		echo Writing "HKLM\SOFTWARE\Wow6432Node\Avisynth" /v "" /d "%AVS_SRC_DIR%\%avs%"
		reg add "HKLM\SOFTWARE\Wow6432Node\Avisynth" /v "" /d "%AVS_SRC_DIR%\%avs%" /f
		echo.

		echo Writing "HKLM\SOFTWARE\Wow6432Node\Avisynth" /v "PluginDir2_5" /d "%REGPLUGDIR32%"
		reg add "HKLM\SOFTWARE\Wow6432Node\Avisynth" /v "PluginDir2_5" /d "%REGPLUGDIR32%" /f
		if errorlevel 1 ( echo Error on importing registry keys!
			goto :error )

		if "%REGPLUGDIR32PLUS%" GTR "" (
			echo.
			echo Writing "HKLM\SOFTWARE\Wow6432Node\Avisynth" /v "PluginDir+" /d "%REGPLUGDIR32PLUS%"
			reg add "HKLM\SOFTWARE\Wow6432Node\Avisynth" /v "PluginDir+" /d "%REGPLUGDIR32PLUS%" /f
			if errorlevel 1 ( echo Error on importing registry keys!
				goto :error )
		)

		call :regWow64
	)
)
goto :end

:regWin
echo.
echo adding more registry entries...
reg add "HKLM\SOFTWARE\Classes\AVIFile\Extensions\AVS" /ve /d "{E6D6B700-124D-11D4-86F3-DB80AFD98778}" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\CLSID\{E6D6B700-124D-11D4-86F3-DB80AFD98778}" /ve /d "AviSynth" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\CLSID\{E6D6B700-124D-11D4-86F3-DB80AFD98778}\InProcServer32" /ve /d "AviSynth.dll" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\CLSID\{E6D6B700-124D-11D4-86F3-DB80AFD98778}\InProcServer32" /v "ThreadingModel" /d "Apartment" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\Media Type\Extensions\.avs" /v "Source Filter" /d "{D3588AB0-0781-11CE-B03A-0020AF0BA770}" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\.avs" /ve /d "avsfile" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\.avsi" /ve /d "avs_auto_file" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\avsfile" /ve /d "AviSynth Script" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\avsfile\DefaultIcon" /ve /d "%WINDIR%\System32\AviSynth.dll,0" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\avs_auto_file" /ve /d "AviSynth Autoload Script" /f >nul 2>&1
if defined avspl (reg add "HKLM\SOFTWARE\Classes\avs_auto_file\DefaultIcon" /ve  /d "%WINDIR%\System32\AviSynth.dll,1" /f
	) else reg add "HKLM\SOFTWARE\Classes\avs_auto_file\DefaultIcon" /ve /d "%WINDIR%\System32\AviSynth.dll,0" /f
goto :eof

:regWow64
echo.
echo adding more registry entries (wow64 mode)...
reg add "HKLM\SOFTWARE\Classes\AVIFile\Extensions\AVS" /ve /d "{E6D6B700-124D-11D4-86F3-DB80AFD98778}" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Wow6432Node\Classes\CLSID\{E6D6B700-124D-11D4-86F3-DB80AFD98778}" /ve /d "AviSynth" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Wow6432Node\Classes\CLSID\{E6D6B700-124D-11D4-86F3-DB80AFD98778}\InProcServer32" /ve /d "AviSynth.dll" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Wow6432Node\Classes\CLSID\{E6D6B700-124D-11D4-86F3-DB80AFD98778}\InProcServer32" /v "ThreadingModel" /d "Apartment" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Wow6432Node\Classes\Media Type\Extensions\.avs" /v "Source Filter" /d "{D3588AB0-0781-11CE-B03A-0020AF0BA770}" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\.avs" /ve /d "avsfile" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\.avsi" /ve /d "avs_auto_file" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\avsfile" /ve /d "AviSynth Script" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\avsfile\DefaultIcon" /ve /d "%WINDIR%\SysWow64\AviSynth.dll,0" /f >nul 2>&1
reg add "HKLM\SOFTWARE\Classes\avs_auto_file" /ve /d "AviSynth Autoload Script" /f >nul 2>&1
if defined avspl (reg add "HKLM\SOFTWARE\Classes\avs_auto_file\DefaultIcon" /ve /d "%WINDIR%\SysWow64\AviSynth.dll,1" /f
	) else reg add "HKLM\SOFTWARE\Classes\avs_auto_file\DefaultIcon" /ve /d "%WINDIR%\SysWow64\AviSynth.dll,0" /f
goto :eof

:uninstall
echo.
echo Remove %avs% .dll and registry entries from this system?
set /p rm=[y/n]: 
if /i not [%rm%]==[y] goto :cancel
echo.
if defined winarch (
	if /i %avs%==AVSx64 ( echo Attempt to remove x64 AVS from x32 Windows.
		goto :cancel )
	echo removing %avs% files from "%WINDIR%\System32"...
	del "%WINDIR%\System32\avisynth.dll"
	del "%WINDIR%\System32\devil.dll"
	call :unregWin all
) else (
	if /i %avs%==AVSx64 (
		echo removing %avs% files from "%WINDIR%\System32"...
		del "%WINDIR%\System32\devil.dll"
		del "%WINDIR%\System32\avisynth.dll"
		if exist "%WINDIR%\SysWow64\avisynth.dll" (call :unregWin) else (
			call :unregWin all )
	) else (
		echo removing %avs% files from "%WINDIR%\SysWow64"...
		del "%WINDIR%\SysWow64\avisynth.dll"
		del "%WINDIR%\SysWow64\devil.dll"
		if exist "%WINDIR%\System32\avisynth.dll" (call :unregWow64) else (
			call :unregWow64 all )
	)
)
goto :end
	
:unregWin
echo.
echo removing registry entries...
reg delete "HKLM\SOFTWARE\Avisynth" /f
reg delete "HKLM\SOFTWARE\Classes\CLSID\{E6D6B700-124D-11D4-86F3-DB80AFD98778}" /f
reg delete "HKLM\SOFTWARE\Classes\Media Type\Extensions\.avs" /f
if [%1]==[all] call :unregAll
goto :eof

:unregWow64
echo.
echo removing registry entries (wow64 mode)...
reg delete "HKLM\SOFTWARE\Wow6432Node\Avisynth" /f
reg delete "HKLM\SOFTWARE\Wow6432Node\Classes\CLSID\{E6D6B700-124D-11D4-86F3-DB80AFD98778}" /f
reg delete "HKLM\SOFTWARE\Wow6432Node\Classes\Media Type\Extensions\.avs" /f
if [%1]==[all] call :unregAll
goto :eof

:unregAll
echo.
echo removing more avs registry entries...
reg delete "HKLM\SOFTWARE\Classes\AVIFile\Extensions\AVS" /f
reg delete "HKLM\SOFTWARE\Classes\.avs" /f
reg delete "HKLM\SOFTWARE\Classes\.avsi" /f
reg delete "HKLM\SOFTWARE\Classes\avsfile" /f
reg delete "HKLM\SOFTWARE\Classes\avs_auto_file" /f
goto :eof

:noAdmin
echo  This batch file must run with elevated privileges, so:
echo.
echo  Right click on it and chose "Run as administrator"
goto :end

:error
echo.
echo something went wrong...
echo.

:cancel
echo.
echo cancelled...
echo.

:end
endlocal
echo.
pause
Do you change the name of the folders as well?
GAP is offline   Reply With Quote
Old 29th January 2023, 19:43   #234  |  Link
Emulgator
Big Bit Savings Now !
 
Emulgator's Avatar
 
Join Date: Feb 2007
Location: close to the wall
Posts: 1,531
Yes, you would match these folder names as given in script.
Or choose your own folder names and match script.
__________________
"To bypass shortcuts and find suffering...is called QUALity" (Die toten Augen von Friedrichshain)
"Data reduction ? Yep, Sir. We're that issue working on. Synce invntoin uf lingöage..."

Last edited by Emulgator; 29th January 2023 at 19:59.
Emulgator is offline   Reply With Quote
Old 10th March 2023, 14:14   #235  |  Link
LeXXuz
21 years and counting...
 
LeXXuz's Avatar
 
Join Date: Oct 2002
Location: Germany
Posts: 716
I have another syntax question.

Is there any difference between these 3 script snips:

1)

Code:
PRE1=filter1()
PRE2=filter2(PRE1)
filter3(PRE2)
2)
Code:
filter1().filter2().filter3()
3)
Code:
filter1()
filter2()
filter3()
If so, I'd appreciate a thorough explanation.
It would help me to understand some of the more advanced scripts any better.
LeXXuz is offline   Reply With Quote
Old 10th March 2023, 17:35   #236  |  Link
DTL
Registered User
 
Join Date: Jul 2018
Posts: 1,041
With 1) you keep 'last' unchanged untill 3rd line.

3) overwrite 'last' in each line.
DTL is offline   Reply With Quote
Old 10th March 2023, 23:20   #237  |  Link
LeXXuz
21 years and counting...
 
LeXXuz's Avatar
 
Join Date: Oct 2002
Location: Germany
Posts: 716
Quote:
Originally Posted by DTL View Post
With 1) you keep 'last' unchanged untill 3rd line.

3) overwrite 'last' in each line.
I see. So, if I'm only interested in what happens at the very end of those scripts after the last line, the output of all 3 is equivalent?
LeXXuz is offline   Reply With Quote
Old 10th March 2023, 23:47   #238  |  Link
VoodooFX
Banana User
 
VoodooFX's Avatar
 
Join Date: Sep 2008
Posts: 985
Quote:
Originally Posted by DTL View Post
With 1) you keep 'last' unchanged untill 3rd line.

3) overwrite 'last' in each line.
I think there are other unseen "differences", like in caching behavior.

Anyway, why this thread is treated like "Ask any question about AvS" thread, when it's about AvS wiki?
VoodooFX is offline   Reply With Quote
Old 11th March 2023, 00:31   #239  |  Link
LeXXuz
21 years and counting...
 
LeXXuz's Avatar
 
Join Date: Oct 2002
Location: Germany
Posts: 716
Quote:
Originally Posted by VoodooFX View Post
Anyway, why this thread is treated like "Ask any question about AvS" thread, when it's about AvS wiki?
My apologies. I misunderstood this thread. Will post questions about AVS somewhere else in future.
LeXXuz is offline   Reply With Quote
Reply

Tags
avisynth, faq

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

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 20:30.


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